• 使用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(); 
    }

  • 相关阅读:
    Eclipse生成部署描述符(web.xml)
    异步Servlet和异步过虑器
    安装 R 及 R 包
    Servlet封装类
    设计模式——装饰者模式
    Eclipse快速生成覆盖方法、Getter、Setter的方法
    查看CPU核数和内存
    Filter 过滤器
    Listener 监听器
    Tag file
  • 原文地址:https://www.cnblogs.com/kuailewangzi1212/p/591273.html
Copyright © 2020-2023  润新知