2016-02-13 73 views
0

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

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

,而客户端连接到服务器:

Socket socket = new Socket(host, port); 

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

我的问题是是否有办法让两个对等方使用客户端代码等待另一个主机出现,以便哪个对等方首先到达并不重要。

+0

你想实现什么?这似乎是一个XY问题!请描述你正在开发的内容? –

+0

@Am_I_Helpful也许这是一个XY问题。我正在开发一款游戏,但我的问题只是为了好奇 – user4052054

+0

您是否尝试过使用JXTA框架? –

回答

4

在对等应用程序中,每个对等端既是客户端又是服务器。通常使用多个线程使对等端能够监听传入的连接并为其他对等端建立新的连接。因此,所有同行的代码都是一样的。