• Socket (二) 简单的代码实现


    SocktServer.cpp

    #include "stdafx.h"
    #pragma comment(lib,"ws2_32.lib")
    #include <Winsock2.h> 
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	WORD wVersionRequested; 
     WSADATA wsaData; 
     int err; 
       
     wVersionRequested = MAKEWORD( 1, 1 ); 
       
     err = WSAStartup( wVersionRequested, &wsaData ); 
     if ( err != 0 ) { 
      return 0; 
     } 
       
     if ( LOBYTE( wsaData.wVersion ) != 1 || 
            HIBYTE( wsaData.wVersion ) != 1 ) { 
      WSACleanup( ); 
      return 0; 
     } 
     SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); 
      
     SOCKADDR_IN addrSrv; 
     addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); 
     addrSrv.sin_family=AF_INET; 
     addrSrv.sin_port=htons(8080); 
       
     bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); 
      
     listen(sockSrv,5); 
      
     SOCKADDR_IN addrClient; 
     int len=sizeof(SOCKADDR); 
     while(1) 
     { 
      printf("in while
    ");
      SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); //服务端会在此一直等到客户端连接,只有客户端连接成功后,才会执行后续语句
      printf("have a client connecting
    ");
      char sendBuf[50]; 
      sprintf(sendBuf,"Welcome %s ",inet_ntoa(addrClient.sin_addr)); 
      send(sockConn,sendBuf,strlen(sendBuf)+1,0); 
      char recvBuf[50]; 
    
      for (int j = 0; j < 50; j++)
      {
    	  recvBuf[j] = NULL;
      }
      recv(sockConn,recvBuf,50,0); 
    
      printf("%s
    ",recvBuf); 
      closesocket(sockConn); 
     } 
      
    	return 0;
    }
    

     SocktClient.cpp

    #include "stdafx.h"
    #pragma comment(lib,"ws2_32.lib")
    #include <Winsock2.h> 
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	WORD wVersionRequested;
     WSADATA wsaData;
     int err;
     
     wVersionRequested = MAKEWORD( 1, 1 );
     
     err = WSAStartup( wVersionRequested, &wsaData );
     if ( err != 0 ) {
      return 0;
     }
     
     if ( LOBYTE( wsaData.wVersion ) != 1 ||
            HIBYTE( wsaData.wVersion ) != 1 ) {
      WSACleanup( );
      return 0;
     }
     SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
     
     SOCKADDR_IN addrSrv;
     addrSrv.sin_addr.S_un.S_addr=inet_addr("192.168.0.127");
     addrSrv.sin_family=AF_INET;
     addrSrv.sin_port=htons(8080);
     connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
     send(sockClient,"00000",strlen("11111 ")+1,0);
     char recvBuf[50];
     recv(sockClient,recvBuf,50,0);
     printf("%s
    ",recvBuf);
     
     closesocket(sockClient);
     WSACleanup();
    	return 0;
    }
    
  • 相关阅读:
    python 企业微信告警
    容器启动报错listen unix /containerd-shim/moby/9a3b9086ece8fcd8746695836e3f057cc0313b3cdb722d76a5f571dfa428759e/shim.sock: bind: address already in use: unknown
    etcd查询k8s相关数据
    hadoop三大核心组件概念及原理
    使用nginx反代实现k8s apiserver高可用
    k8s useraccout账号创建及RDBA授权
    k8s之二进制部署
    git代码提交后jenkins的构建与持续部署
    dockerfile动态修改服务配置文件
    数据库操作语句DDL,DML,DCL
  • 原文地址:https://www.cnblogs.com/blogwww/p/9508904.html
Copyright © 2020-2023  润新知