zoukankan      html  css  js  c++  java
  • 使用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(); 
    }

  • 相关阅读:
    Leetcode Substring with Concatenation of All Words
    Leetcode Divide Two Integers
    Leetcode Edit Distance
    Leetcode Longest Palindromic Substring
    Leetcode Longest Substring Without Repeating Characters
    Leetcode 4Sum
    Leetcode 3Sum Closest
    Leetcode 3Sum
    Leetcode Candy
    Leetcode jump Game II
  • 原文地址:https://www.cnblogs.com/kuailewangzi1212/p/591273.html
Copyright © 2011-2022 走看看