我想采用udp协议(端口7110)发送一个数据包至Internet上的服务器(IP:61.145.75.86,端口27017),已经知道服务器在接收到这个数据包后会立即采用Udp协议返回一个数据包至本机(端口7110),请教如何发送与接收,谢谢!

解决方案 »

  1.   

    你就启动一个端口号为7110的udp server来接收就行了。msdn中都有原代码啊。
      

  2.   

    我试过发送之后,立即调用下列代码:CSocket m_ReceiveSocket;
    if(m_ReceiveSocket.Create(v_uiSrvPort, SOCK_DGRAM, NULL) == 0)
    {
      return 0;
    }
    char chrReceive[A2S_INFO_LENGTH];
    ::SecureZeroMemory(chrReceive, sizeof(chrReceive));
    m_ReceiveSocket.ReceiveFrom(chrReceive, A2S_INFO_LENGTH, strSrvIP, v_uiSrvPort, 0);但程序一直停在最后一行,一直在等待接收,根本无法接收到服务器返回的信息。我在本机试过是可以成功发送和接收的。但在局域网和互联网上就不行,我也试过关闭防火墙等,但都无法成功!
      

  3.   

    刚刚再试了一下,发现先启动接收进程,然后再发送,则可以成功接收,我简单地改为以下代码:CSocket m_ReceiveSocket;
    if(m_ReceiveSocket.Create(v_uiSrvPort, SOCK_DGRAM, NULL) == 0)
    {
      return 0;
    }
    char chrReceive[A2S_INFO_LENGTH];
    ::SecureZeroMemory(chrReceive, sizeof(chrReceive));
    m_ReceiveSocket.Receive(chrReceive, A2S_INFO_LENGTH);但现在问题是,一旦启动接收进程,则程序一直在等待中,是不是“阻塞”?
      

  4.   

    CSocket类本身就是同步阻塞的吧~~
      

  5.   

    你就打开一个socket,邦定到你要7110端口,然后用这个socket收发就可以了