使用socket tcp实现通讯

一、服务器端
   #include <Winsock2.h>
#include <stdio.h>
/*
需要引入Ws2_32.lib动态链接库
*/
void main()
{
 //-----------------
 //以下代码用于加载socket函数库
 //-----------------
 WORD wVersionRequested;
 WSADATA wsaData;
 int err;

 wVersionRequested=MAKEWORD(1,1);
 
 err=WSAStartup(wVersionRequested,&wsaData);
 if(err!=0)
 {
  return ;
 }
 if(LOBYTE(wsaData.wVersion)!=1 ||
  HIBYTE(wsaData.wVersion)!=1)
 {
  WSACleanup();
  return ;
 }


 //-----------------------------
 //
 //-----------------------------
 SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);

 SOCKADDR_IN addrSrv;
 addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//可以支持双网卡访问,本地多ip问题
 addrSrv.sin_family=AF_INET;
 addrSrv.sin_port=htons(6000);
 
 bind(sockSrv,(SOCKADDR *)&addrSrv,sizeof(SOCKADDR));//将本地ip与socket绑定
 listen(sockSrv,5);//启动服务器,开始侦听,6000端口
 
 SOCKADDR_IN addrClient;
 int len=sizeof(SOCKADDR);

 while(1)
 {

  SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);//接受客户端的请求,并与客户端建立连接

  char recBuf[100];
  recv(sockConn,recBuf,100,0);//接受客户端数据
  printf("%s\n",recBuf);

  
  char sendBuf[100];
  sprintf(sendBuf,"Welcome %s to mxh srv",
   inet_ntoa(addrClient.sin_addr));
  send(sockConn,sendBuf,strlen(sendBuf)+1,0);//向客户端发送数据
  //send(sockConn,recBuf,strlen(recBuf)+1,0);//向客户端发送数据

  closesocket(sockConn);
 }
}

二、客户端
   #include <Winsock2.h>//引入socket库
#include <stdio.h>//引入c语言标准输入输出函数库
/*
需要引入Ws2_32.lib动态链接库
*/
void main()
{
 //-----------------
 //以下代码用于加载socket函数库
 //-----------------
 WORD wVersionRequested;
 WSADATA wsaData;
 int err;
 
 wVersionRequested=MAKEWORD(1,1);
 
 err=WSAStartup(wVersionRequested,&wsaData);
 if(err!=0)
 {
  return ;
 }
 if(LOBYTE(wsaData.wVersion)!=1 ||
  HIBYTE(wsaData.wVersion)!=1)
 {
  WSACleanup();
  return ;
 }
 
 
 //-----------------------------
 //创建连接,开始通讯
 //-----------------------------
 int i=0;
 while(1)
 {
  SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
  SOCKADDR_IN addrSrv;
  addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
  addrSrv.sin_family=AF_INET;
  addrSrv.sin_port=htons(6000); 
  
  connect(sockClient,(SOCKADDR *)&addrSrv,sizeof(SOCKADDR));//请求与服务器建立连接
  send(sockClient,"this is mxh request",strlen("this is mxh request")+1,0);//向服务器发送数据
  
  
  char recBuf[100];
  recv(sockClient,recBuf,100,0);//接受服务器的数据
  printf("%s\n",recBuf);
  
  closesocket(sockClient);
 }
 WSACleanup(); 
}

原文地址:https://www.cnblogs.com/kuailewangzi1212/p/591273.html