【发布时间】:2011-08-01 12:00:50
【问题描述】:
我正在尝试用 Java 做一个 p2p 文件共享原型/软件。 我有兴趣学习使用套接字,所以我不会使用 JXTA 或任何类型的 API。
我阅读了有关 TCP 打孔的信息,它可能不适用于所有 NAT 类型。 但我可以看到 Gnutella 和 BitTorrent 总是可以在我尝试的每台机器/NAT 上运行。 那么他们是否使用 TCP Hole Punching 来启动主机之间的连接?
另外,这样的代码可以进行 TCP 打孔吗?
final ServerSocket s = new ServerSocket(7777);
Thread t = new Thread(new Runnable(){
public void run() {
try
{
s.accept();
}
catch(Exception ex)
{
}
}
});
Socket sock = new Socket();
sock.connect(new InetSocketAddress("IP ADDRESS", 7777), 50000);
【问题讨论】:
-
非常有趣的问题(+1)
标签: java tcp bittorrent