我注意到如果你想编写一个使用监听套接字的应用程序,你需要在你的路由器上创建端口转发规则。如果我想连接两台计算机而没有其中一台计算机搞乱路由器设置,有没有办法可以让两个客户端相互连接而不使用任何一个使用侦听套接字?在其他地方需要另一台服务器告诉他们连接但是可能吗?
答案 0 :(得分:4)
一些澄清和答案:
因此,重申一下,ServerSocket的ONLY角色(就您的问题而言)是监听传入的连接请求,并从这些请求中创建一个Socket,这是一个双向通信通道。两个终点。
要回答这个问题,“我如何设计避免使用侦听套接字的点对点应用程序?”,但事实并非如此。在像Vuze这样的情况下,该软件同时充当客户端和服务器,因此单独使用术语“对等”,而不是“客户端”或“服务器”。在Vuze中,每个客户端都是一个服务器,每个服务器(跟踪器除外)都是客户端。
答案 1 :(得分:2)
如果您需要两台计算机之间的TCP连接,并且它们都在路由器后面(并且您不想设置端口转发),我认为您唯一的另一种可能性是在某个地方安装第三台服务器在运行ServerSocket的防火墙后面,接受2台其他计算机之间的连接以及代理2之间的通信。无法在没有一个监听套接字而另一个连接到套接字的情况下在2之间建立TCP连接。
答案 2 :(得分:0)
问:如果我想连接两台没有任何一台计算机的计算机 计算机搞乱路由器设置,有没有办法让我 可以让两个客户端相互连接
是:让服务器监听开放端口:)