两个不同局域网内的UDP客户端,发送消息到INTERNET的服务器上,服务器保存下它们的网关在INTERNET上的IP,PORT,发送成功消息回去,OK(相当于客户端登录成功,)然后两个客户端分别都从服务器上获得对方的在INTERNET上的IP,PORT,v如果此时这两个UDP客户端是否可以不通过SERVER来分别传消息到对方那里?用的是TNMUDP,有好的方法,可以另外加分,

解决方案 »

  1.   

    偶上csdn上遇到帮我的第一个人是xxmmmx(踢踏),好长时间不见他了,帮你up
      

  2.   

    如果不通过服务器来中转传送信息的话,那么要用的方法只有采用基于物理连接的点对点通信模式——方法可以使用Windows超级终端来实现,或者Modem远程对拨。不过我觉着这种方式太有局限性,不能离线发送信息。于是很多公司都采用UDP,通过服务器来中转发送信息。服务器的作用一般就是标记信息要发送到端的IP、端口号,同时对发送的信息做一些缓存、重组、过滤等操作。在不同局域网的UDP客户端首先要通过server对对方节点的IP、Port做标记,进行识别,识别确认,信息才能正确传送——但是这种方式还是无法脱离服务器的支持独立工作。所以,既然UDP是无基于连接的通信协议,那么要想信息传送成功,唯有通过服务器来中转了。除非同时采用TCP,判断发送信息的双方是否都在线(对应服务器端端口标记为:active),如果是,那么采用TCP点对点的通信模式;如果不是,那么采用基于UDP协议的服务器中转模式。不过从来没有具体做过,想想而已,希望能对你有帮助。
      

  3.   

    俺也认为楼主所说的不可能做到,qq的实现肯定是通过qq服务器中转的。不在局域网内、不设防火墙还差不多。
      

  4.   

    都说QQ是用UDP来实现的,怎么可能用服务器中转呢,只有在不在线的时候在用服务器中转,
      

  5.   

    udp是一个面向无连接的协议
    tcp是一个面向连接的协议