BitTorrent和Gnutella在传输文件时使用什么来绕过NAT?
我正在尝试在Java中做一个p2p文件共享原型/软件。我有兴趣学习使用套接字,所以,不,我不会使用JXTA或任何类型的API。
我读过关于TCP打孔的文章,它可能不适用于所有NAT类型。但我可以看到Gnutella和BitTorrent总是在我尝试的每台机器/ NAT上工作。那么他们是否使用 TCP 打孔来启动主机之间的连接呢?
另外,像这样的代码会做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);
 
					 
				 
				    		 
				    		 
				    		 
				    		