客户端用WSASEND发送,用recv读数据没有问题,但用WSARecv时候,wsagetlasterror()回返回值为10045的错误

解决方案 »

  1.   

    代码如下:
    发送端: LPWSABUF data=new WSABUF ;
         data->buf="消息";
                 data->len=strlen(data->buf)*2;
      DWORD  len;
      if   (WSASend(Clienter,data,1,&len,0,NULL,NULL)!=0)  
            {  printf("send() failed: %d\n", WSAGetLastError());
                break;
           }
     接收端:             WSABUF redata;
    DWORD relen;

          if(  WSARecv(accepter,&redata,1,&relen,NULL,NULL,NULL)== SOCKET_ERROR)
      {
    int a=WSAGetLastError();
      return 0;
      }
    为什么用WSARecv会出现问题,而用Recv没有问题:
    char buf1[1024]={0};
           int i=recv(accepter,buf1,1024,0);
      

  2.   

    WSARecv使用在overlap重叠模型中的,需要事件通知需要WSAWaitForMultipleEvents和WSAEnumNetworkEvents来等待事件