用于对等通信的Java“对等”套接字

时间:2016-02-13 15:54:41

标签: java sockets network-programming p2p

在Java中,您可以使用SocketServerSocket来获取双向通道,以便在两个进程之间进行通信。但是只有其中一个必须拥有ServerSocket并被视为“服务器”而另一个被视为“客户端”,即服务器必须首先可用。那么,有没有办法让两个对等的代码相同?我的意思是,在客户端 - 服务器应用程序中,服务器必须等待客户端:

ServerSocket serverSocket = new ServerSocket(port);
Socket client = serverSocket.accept();

而客户端必须连接到服务器:

Socket socket = new Socket(host, port);

如果没有活动服务器,则客户端代码将失败。

我的问题是,是否有办法让两个对等方使用客户端代码等待另一个主机出现,这样哪个对等方首先到达无关紧要。

1 个答案:

答案 0 :(得分:4)

在对等应用程序中,每个对等方都是客户端和服务器。通常使用多个线程使对等体能够监听传入的连接以及向其他对等体建立新的连接。因此,所有同行的代码都是相同的。