【发布时间】:2012-05-11 04:28:48
【问题描述】:
所以我正在做 NAT 遍历。
接下来的场景是:我有两部 Android 手机,我想使用 HTTP 服务器连接它们(套接字)(两个设备都在 NAT 之后)。
到目前为止一切顺利,两个客户端都连接到 HTTP 服务器,HTTP 服务器记录了他们的 IP 地址和端口,
但是有一个小问题,因为我使用Java HttpDefaultClient(),每次我从客户端发送请求到服务器时,它都会改变端口。好吧,这听起来很简单: 让我们使用 Socket() 来实际维护到服务器的有效 TCP 连接。
public Socket(InetAddress地址, 国际港口, InetAddress 本地地址, 诠释本地端口) 抛出 IOException
我将只使用这个类并将 localPort 随机放置,我会记住。 现在我再次做所有事情,这次似乎端口不会改变,就像我想要的那样。
现在我有了对手的 IP 和端口(他也在 NAT 之后),理论上我可以断开 SERVER 连接并使用我已经用于实际托管 clientServer 的相同 localPort?
除非,现在是我有疑问的部分: 1)如果我丢弃 HTTP 服务器套接字,NAT 会理解并删除端口映射吗?(那很糟糕) 2)实际传递对称锥体是如何工作的? 3) STUN 库的工作方式是否有所不同?
【问题讨论】:
标签: android traversal nat stun