+ -
当前位置:首页 → 问答吧 → 我Udp穿透的实现有没有问题?

我Udp穿透的实现有没有问题?

时间:2011-12-27

来源:互联网

我是这么做的:A、B端在各自子网分别定义个UDP socket,绑定端口9010。 登陆服务器S(向S发送一个UDP包)。S收到UDP包后得到A、B的IP地址和端口号。A的发送给B ,B的发送给A。 然后A发送UDP包给B ,B发送UDP包给A是A就能接收到了。

这么实现对不对?

我在两个路由(一个TPlink,一个DLink)下面放A、B端程序。TPlink的NAT 类型应该是Full Cone NAT,A->S后,B直接向A发送UDP包,A就能接收到了。
  
问题出在DLink的路由,正好设置界面有NAT状态可以查看,发现:B->S后 B端的9010就跟S端建立了一个UDP NAT转换。 但B->A后,NAT转换列表里面没有新增B--->A的NAT转换。结果:B->A,A能接收到。 A->B,B接收不到UDP包。 S->B,B是可以接收到的。
DLink路由的NAT是什么类型的? 有办法穿透吗?

作者: pvlking   发布时间: 2011-12-27

你分析下:
端口增长是否为你设计的增长量
是根据IP,还是IP和端口

通时注意B端用户数是不是很多

作者: langyano1   发布时间: 2011-12-27

引用 1 楼 langyano1 的回复:

你分析下:
端口增长是否为你设计的增长量
是根据IP,还是IP和端口

通时注意B端用户数是不是很多

我现在做测试就一个A端 一个B端,B端登录S后,我查看DLink路由里面NAT状态可以发现一个对应NAT转换,S端也能向B端发送UDP包, 但B端向A端发生UDP包后,没有新的NAT转换生成,A端向B端发生UDP,B端接收不到。

我要新建个UDP socket,绑定另一个端口号,向A发生UDP包?  

我UDP穿透的思路对不对的?

作者: pvlking   发布时间: 2011-12-27