我的程序是基于udp协议开发的,以前是在一个段内运行的比如两个机器ip分别为192.10.10.0和192.10.10.1通讯是正常的。现在如果我想让这个程序在分别安装在192.10.10.0和192.10.9.0两台机器中(即有网关的存在),那么就接收不到通讯了。请问我应该怎样解决这个问题呢?

解决方案 »

  1.   

    把你服务器开的端口在路由器上做一个影射。或者看看“P2P之UDP穿透NAT的原理与实现 ”P2P之UDP穿透NAT的原理与实现 - 增强篇(附修改过的源代码)关键词: P2P UDP NAT 原理 穿透 Traveral Symmetric Cone
    原始作者: Hwycheng Leo([email protected])
    源码下载: http://bbs.hwysoft.com/download/UDP-NAT-LEO.rar
    参考:http://midcom-p2p.sourceforge.net/draft-ford-midcom-p2p-01.txt
          P2P之UDP穿透NAT的原理与实现(shootingstars)
      

  2.   

    打洞!打洞!但还要看网关开Session的类型,有些网关事打不过去的,如果你看了以上的那篇文章并照做还不行的话,只能服务器中转了。
      

  3.   

    没必要的话就做个VPN就可以了,否则你还须一台公网服务器,如果没有公网服务器那就只能在某台路由器上做个端口映射,将公网的某个端映射到你指定的那台电脑才能做服务器.