解决方案 »

  1.   

    UDP socket用recvfrom接收时会获取发送者的sockaddr,如果需要回应,用sendto发生给那个sockaddr即可。关端口映射什么事?
      

  2.   

    你说的客户端到服务端是指client发出一个请求,然后server会进行处理并返还数据是吧?
    然后你现在希望server端能够主动给client发数据,这么理解没问题吧?
    你的client给server发送请求的频率大概是多少时间一次?
      

  3.   

    5秒到一分钟
    不过每20秒会发一次心跳包
    你这个信息量不算大。服务端和客户端都有对应的onReceive响应就行
    你自己测试一下,看看这么做会有什么问题,不试一下是没法否定这个方案的。
      

  4.   

    5秒到一分钟
    不过每20秒会发一次心跳包
    你这个信息量不算大。服务端和客户端都有对应的onReceive响应就行
    你自己测试一下,看看这么做会有什么问题,不试一下是没法否定这个方案的。
    内网内一切正常,外网接受不到,我怀疑是客户端没有端口映射
      

  5.   

    不需要做端口印射。可以做可靠传输,如同TCP一样。比如UDX协议。www.goodudx.com使UDP编程更为方便。
      

  6.   

    我曾经做过一个类似的系统,服务端与客户端采用不同的端口号广播,发给客户端的数据通过指令进行判别。#define CONNECT_UDP_PORT _T("38839") // 服务平台UDP通信端口
    #define CONNECT_UDP_PORT_GM _T("38838") // 管理平台UDP通信端口
      

  7.   

    本着利人利己的想法……
    问题解决了,我讲一下具体方法
    客户端发送和接受要用同一个socket,另外每次发送要重置port
    这其实就是一个NAT穿透问题