send函数用错了,MSG_OOB标志是用于带外数据,你应该使用0。
接受直接用recv

解决方案 »

  1.   

    哦?谢谢!但是,怎样在服务器端发信息给客户端?服务器端怎么记录客户的socket,不是下面的pSock吗??void CSocket_ServerDlg::OnAccept(SOCKET pSock)
    {
    send(pSock,"aaaaaaaaa",20,MSG_OOB);  //怎么这句话不行啊??
    ...........
    谢谢
      

  2.   

    看不懂啊,为什么没有accept就send(pSock,"aaaaaaaaa",20,MSG_OOB);  呢,你还是看看客户服务器编程的流程吧
    还有:DECnet supports the sending and receiving of out-of-band data via the MSG_OOB flag for recv and send. If a send with the MSG_OOB flag is sent, the recv must be posted with MSG_OOB in order to read the data. To check for the presence of out-of-band data, use select with exceptfds set, or a WSAAsyncSelect with FD_OOB set.
    而且简单的程序,没必要用MSG_OOB
      

  3.   

    服务器端listen后,调用accept产生新的SOCKET new,然后send(new,...)
      

  4.   

    "  服务器端listen后,调用accept产生新的SOCKET new,然后send(new,...) "
    我也是这样做的亚
    void CSocket_ServerDlg::OnAccept(SOCKET pSock)
    {
    send(pSock,"Sadfsadfasdf",20,0);
             sockets.AddTail(pSock);
             int len = sizeof(sockaddr);
    sockaddr_in  clientaddr;
    SOCKET clientSocket = accept(serverSocket,(struct sockaddr*)  lientaddr, &len);
             send(clientSocket,"Sadfsadfasdf",20,0);
    }
      

  5.   

    send(pSock,"Sadfsadfasdf",20,0);
            sockets.AddTail(pSock);
            int len = sizeof(sockaddr);
    什么意思