zoukankan      html  css  js  c++  java
  • vc udp通信设置

    通信的方式很简单只是在特殊条件下要求客户端设置通信端口时要设置其端口,网上很少有提及udp客户端通信端口的
    在接收数据时,int recvfrom(
      SOCKET s,
      char* buf,
      int len,
      int flags,
      struct sockaddr* from,
      int* fromlen
    );

    返回值为-1,此时可能是因为接收的len太小不能将缓冲区的数据全部接收。换言之,必须将数据缓冲区的数据一次全部接收,不能按字节接收。
    产生错误时用WSAGetLastError分析错误的原因。


     int Error;
     WORD VersionRequested;
     WSADATA WsaData;
     VersionRequested=MAKEWORD(2,2);
     Error=WSAStartup(VersionRequested,&WsaData); //启动WinSock2
     if(Error!=0)
     {
      return FALSE;
     }
     else
     {
      if(LOBYTE(WsaData.wVersion)!=2||HIBYTE(WsaData.wHighVersion)!=2)
      {
       WSACleanup();
       return FALSE;
      }
      
     }
     
     //struct sockaddr_in server;
     int len =sizeof(server);
     server.sin_family=AF_INET;
     server.sin_port=htons(nPort);                      ///server的监听端口
     server.sin_addr.s_addr=inet_addr(IP_Str); ///server的地址
     
     client.sin_addr.s_addr = htonl(INADDR_ANY);
     client.sin_family =AF_INET;
     client.sin_port =htons(LocPort);//设置本地客户端的端口
     UDP_Socket=socket(AF_INET,SOCK_DGRAM,0);
     bind(UDP_Socket,(struct sockaddr *)&client,sizeof(client));
     
     int RecvTimeout =1000;   //设置超时接收属性
     setsockopt(UDP_Socket, SOL_SOCKET, SO_RCVTIMEO, (char*)&RecvTimeout, sizeof(RecvTimeout));

  • 相关阅读:
    发送xml请求数据,返回数据怎么获取
    laravel打印sql语句
    布隆过滤器-使用场景的思考
    sql性能优化
    JS Date.parse() 函数详解
    vuejs中的watch监听属性
    JS正则test()方法
    golang实现简单线程池
    golang map实现set
    golang init函数
  • 原文地址:https://www.cnblogs.com/jeb/p/1208264.html
Copyright © 2011-2022 走看看