Java 如何将两个或多个客户端套接字直接连接在一起?

Java 如何将两个或多个客户端套接字直接连接在一起?,java,Java,我正在寻找一种直接连接两个或多个客户端套接字的方法,而不需要运行服务器应用程序。我已经搜索了几种方法,我能找到的最好的方法是JXTA P2P协议。我只是想知道除了JXTA之外还有没有其他选择 客户端交互的基本功能是1客户端向所有其他客户端发送消息的能力,2请求其他客户端拥有的可用文件 值得注意的是,我将在我的计算机本地主机上运行多个应用程序实例,因此NAT或防火墙不是问题。您看过吗?几乎为零的设置,为您提供了常见集合(如列表、集合、映射等)的分布式实现,以及发布-订阅机制。默认情况下,在节点之间

我正在寻找一种直接连接两个或多个客户端套接字的方法,而不需要运行服务器应用程序。我已经搜索了几种方法,我能找到的最好的方法是JXTA P2P协议。我只是想知道除了JXTA之外还有没有其他选择

客户端交互的基本功能是1客户端向所有其他客户端发送消息的能力,2请求其他客户端拥有的可用文件

值得注意的是,我将在我的计算机本地主机上运行多个应用程序实例,因此NAT或防火墙不是问题。

您看过吗?几乎为零的设置,为您提供了常见集合(如列表、集合、映射等)的分布式实现,以及发布-订阅机制。默认情况下,在节点之间使用多播通信。

您需要

似乎拥有实现它们所需的所有代码


请注意,这仅适用于在LAN上运行的应用程序,您可以说您已经在LAN上运行了。支持跨不同网络以及通常跨单个大型网络的不同网段的多播需要路由器支持。

根据定义,接受连接或(对于UDP)接收请求的代码段就是服务器。因此,在我看来,你想要的在逻辑上是不可能的。那么你是说每个客户机都应该既是一个客户机又是一个与所有其他客户机保持连接的服务器?这在UDP或TCP中会更好吗?据你所知,它闻起来像UDP。看,服务器就是为请求服务的东西。如果您想交换文件,客户机会有人发出请求,例如:有哪些文件?回答的人是服务器。例如,如果一个客户端想要一个特定的文件,它会向所有运行的客户端请求该文件。但是,如果没有跟踪当前在线客户端的中间服务器,客户端如何知道所有可用的正在运行的客户端?感谢@Anon的澄清,但是设备没有通过LAN/任何网络连接怎么办?他们是怎么找到彼此的?