【发布时间】:2013-01-09 19:15:32
【问题描述】:
我的 PC_1 中有一个服务器套接字等待接受。 PC_2 想要连接该服务器套接字。但是 PC_1 和 PC_2 在 NAT 之后。所以PC_2不知道PC_1监听的真正端口是什么。我想要一种机制来识别这个服务器套接字外部端口。 我不想在路由器 (NAT) 上转发我的端口。我知道这可以通过 TCP 打孔来完成。但是我没有找到从服务器套接字发送数据包的方法。那么我可以做到这一点的方法是什么。谢谢!
【问题讨论】:
-
是 TCP 吗?还是 UDP 也行?
-
如果您的路由器支持 UPnP,您应该查看一些用于 Java 的 UPnP 库
-
@Aniket 是的,它是 TCP。不是 UDP。
-
我从未见过任何可能的 TCP 打孔实现,在我看来,虽然理论上可行,但有其实际问题
-
我刚刚阅读了关于 TCP 打孔的 Wikipedia 文章。我现在感觉有点不舒服。你绝对不能在纯 Java 中做到这一点。它不支持序列号等黑客所需的原始 IP 数据包访问。
标签: java tcp serversocket