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

Posted

技术标签:

【中文标题】用于点对点通信的 Java“对等”套接字【英文标题】:Java "peer" socket for peer to peer communication 【发布时间】:2016-02-13 15:54:40 【问题描述】:

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

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

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

Socket socket = new Socket(host, port);

如果没有活动的服务器,客户端代码就会失败。

我的问题是有没有办法让两个对等点都使用客户端代码等待另一个主机出现,这样哪个对等点先到达都没有关系。

【问题讨论】:

你想达到什么目的?这似乎是一个XY问题!请描述您正在开发什么? @Am_I_Helpful 也许这是一个 XY 问题。我正在开发一款游戏,但我的问题只是出于好奇 你尝试过 JXTA 框架吗? 【参考方案1】:

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

【讨论】:

以上是关于用于点对点通信的 Java“对等”套接字的主要内容,如果未能解决你的问题,请参考以下文章

网络中的点对点到底是啥意思,啥原理啊?

套接字点对点

各位,请问有没有支持CC2530的点对点通信的zigbee例程呢? 谢谢

点对点epoll客户端和死锁

LoRa点对点通信与控制

Objective C 和点对点通信