socket网络通信 c语言完成 vs运行
Posted 月屯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket网络通信 c语言完成 vs运行相关的知识,希望对你有一定的参考价值。
基础知识:
代码:
服务器:
#include<stdio.h>
#include<windows.h>
#pragma comment(lib,"ws2_32.lib")
SOCKADDR_IN cAddr=0;
int len=sizeof cAddr;
SOCKET clientSocket;
int main()
//1.请求版本号
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);
if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2)
printf("连接失败\\n");
return -1;
printf("请求协议成功\\n");
//2.创建socket
SOCKET severSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//通信协议类型,通信用的数据类型,保护方式
if(severSocket==-1)
printf("创建socket失败\\n");
WSACleanup();
return -2;
printf("创建socket成功\\n");
//3.创建协议地址族
SOCKADDR_IN addr=0;
addr.sin_family=AF_INET;//协议版本
addr.sin_addr.S_un.S_addr=inet_addr("192.168.43.140");//用自己的
addr.sin_port=htons(10086);//用10000左右,小的端口被系统用到
//4.绑定
int r=bind(severSocket,(sockaddr*)&addr,sizeof addr);
if(r==-1)
printf("bind失败\\n");
closesocket(severSocket);
WSACleanup();
return -2;
printf("bind成功\\n");
//5.监听
r=listen(severSocket,10);
if(r==-1)
printf("listen失败\\n");
closesocket(severSocket);
WSACleanup();
return -2;
printf("listen成功\\n");
//6.等待客户端连接 阻塞 尾生抱柱
clientSocket=accept(severSocket,(sockaddr*)&cAddr,&len);
if(clientSocket==SOCKET_ERROR)
printf("服务器宕机\\n");
closesocket(severSocket);
WSACleanup();
return -2;
printf("有客户端连接到服务器:%s!\\n",inet_ntoa(cAddr.sin_addr));
//7.通信
char buff[1024];
while(1)
memset(buff,0,1024);
r=recv(clientSocket,buff,1023,NULL);
if(r>0)
buff[r]=0;//添加‘\\0’
printf("接收>>%s\\n",buff);
memset(buff,0,1024);
printf("发送>>");
scanf("%s",buff);
printf("\\n");
send(clientSocket,buff,strlen(buff),NULL);
//8.关闭socket
closesocket(severSocket);
//9.清除协议信息
WSACleanup();
return 0;
在这里插入代码片
客户端:
#include<stdio.h>
#include<windows.h>
#pragma comment(lib,"ws2_32.lib")
SOCKET clientSocket;
int main()
//1.请求版本号
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);
if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2)
printf("连接失败\\n");
return -1;
printf("请求协议成功\\n");
//2.创建socket
clientSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//通信协议类型,通信用的数据类型,保护方式
if(clientSocket==-1)
printf("创建socket失败\\n");
WSACleanup();
return -2;
printf("创建socket成功\\n");
//3.获取服务器协议地址族
SOCKADDR_IN addr=0;
addr.sin_family=AF_INET;//协议版本
addr.sin_addr.S_un.S_addr=inet_addr("192.168.43.140");//用自己的
addr.sin_port=htons(10086);//用10000左右,小的端口被系统用到
//4.连接服务器
int r=connect(clientSocket,(sockaddr*)&addr,sizeof addr);
if(r==-1)
printf("连接服务器失败\\n");
return -1;
printf("连接服务器成功\\n");
//5.通信
char buff[1024];
while(1)
memset(buff,0,1024);
printf("发送>>");
scanf("%s",buff);
printf("\\n");
r=send(clientSocket,buff,strlen(buff),NULL);
memset(buff,0,1024);
r=recv(clientSocket,buff,1023,NULL);
if(r>0)
buff[r]=0;//添加‘\\0’
printf("接受>>%s\\n",buff);
return 0;
在这里插入代码片
运行效果:
以上是关于socket网络通信 c语言完成 vs运行的主要内容,如果未能解决你的问题,请参考以下文章
如何在Windows环境下的VS中安装使用Google Protobuf完成SOCKET通信
C#谁能给我个,C/S 通过Socket与线程通信的例子,,