最近写一个采用UDP的程序,我等待接收的方法是定义一个消息OnClientMsg,然后用WSAAsyncSelect把它跟一个已经定义好的udp socket设置异步消息,然后在OnClientMsg的FD_READ里面用recvfrom来接收消息,但我没有接收到消息。
  请问一下各位大虾,这个方法对么,TCP的C/S模式大概就是这样的思路吧,不知道用在UDP可不可以呢?

解决方案 »

  1.   

    应该可以吧,WSAASYNSELECT只是个异步IO而已,还有 WSAEVENTSELECT,IOCP,等几个
      

  2.   

    当然可以,WSAASYNSELECT是一种模型
      

  3.   

    可以 m_socket = WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,0);
    if(INVALID_SOCKET==m_socket)
    {
    MessageBox("创建套接字失败");
    return FALSE;
    }
    SOCKADDR_IN addrSock;
    addrSock.sin_family=AF_INET;
    addrSock.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
    addrSock.sin_port = htons(9000); if(SOCKET_ERROR==bind(m_socket,(SOCKADDR*)&addrSock,sizeof(SOCKADDR)))
    {
    MessageBox("绑定失败!");
    }

    if(SOCKET_ERROR==WSAAsyncSelect(m_socket,m_hWnd,UM_SOCK,FD_READ))
    {
    MessageBox("注册网络读取事件失败!");
    return FALSE;
    }
    return TRUE;