假设Java有两种套接字:
想象一下两个过程的情况:
X =客户
Y =服务器
服务器进程Y:有一个"ServerSocket",即正在侦听TCP端口
客户端进程X:通过"Socket"向Y发送连接请求.
Y:然后该accept()方法返回一个新的客户端类型"Socket",
当它发生时,两个套接字得到"互连",
所以:客户端进程中的套接字,与服务器进程中的套接字相连.
然后:通过套接字X读/写就像通过套接字Y读/写.
现在,两个客户端套接字互连!!
但是......
如果我在同一个进程中创建两个Client套接字,我想让它们"互连"怎么办?
......甚至可能?
假设如何在不使用中间ServerSocket的情况下使两个客户端套接字互连?
我已经通过创建两个Thread来连续读取A和写B来解决它,而另一个用于读取B和写入A ......
但我认为这可能是更好的方式......(那些世界耗能的线程不是必需的使用客户端 - 服务器方法)
任何帮助或建议将不胜感激!谢谢
编辑:
应用示例:"现有服务器应用程序可以转换为客户端应用程序",例如VNC服务器,一个客户端套接字连接到VNC服务器,并创建其他客户端套接字(连接到中间服务器),然后应用程序互连两个客户端导致VNC服务器是客户端应用程序!然后,不需要公共IP.
VNCServer --- MyApp ---> |中间服务器| <---用户
一台PC如何通过互联网连接到另一台PC?
一个例子是监听PC 1上的连接的程序.PC 1位于路由器1后面.PC 2有一个客户端程序试图连接到PC 1.
在这种情况下,用作收听程序的正确技术/技术是什么?