nat打洞
老板终于让我做打洞了
我从网上找了个demo看不懂啊
为什么
udpClient.Send(公网地址);
udpClient.Send(内网地址);
就通了呢???
谁帮忙说几句
------解决方案--------------------A B要连接到S,肯定首先A B双方都会在本地创建一个socket,
去连接S上的socket。创建一个socket必然会绑定一个本地端口(就算应用程序里面没写
端口,实际上也是绑定了的,至少java确实如此),假设为8888,这样A和B才分别建立了到
S的通信信道。接下来就需要打洞了,打洞则需要A和B分别发送数据包到对方的公网IP。但是
问题就在这里:因为NAT设备是根据端口号来确定session,如果是UDP的socket,A B可以
分别再创建socket,然后将socket绑定到8888,这样打洞就成功了。
------解决方案--------------------
我猜测,
udpClient.Send(内网地址); 连到的是一台服务器
udpClient.Send(公网地址); 从 Internet 上绕了一圈,仍然连到了同一台服务器
问题描述不够清楚,只是猜测,不承担任何责任,转帖过500与本人无关
------解决方案--------------------A向B的公网IP发送一个数据包,则NAT-A能接收来自NAT-B的数据包
并转发给A了(即B现在能访问A了);再由S命令B向A的公网IP发送一个数据包,则
NAT-B能接收来自NAT-A的数据包并转发给B了(即A现在能访问B了)。
------解决方案--------------------
vb.net 和c# 差不多、