【问题标题】:How to directly connect two or more client sockets together?如何将两个或多个客户端套接字直接连接在一起?
【发布时间】:2011-04-12 03:15:49
【问题描述】:

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

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

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

【问题讨论】:

  • 接受连接或在 UDP 的情况下接收请求的代码段,根据定义服务器。因此,在我看来,你想要的东西在逻辑上是不可能的。
  • 所以你的意思是每个客户端都应该是一个客户端和一个与所有其他客户端保持连接的服务器?在 UDP 或 TCP 中会更好吗?
  • 从你所说的闻起来像 UDP。看,服务器只是提供请求的东西。如果要交换文件,有人(客户)会发出请求,例如:有哪些文件?而回答的人就是服务员。
  • 例如,如果一个客户端想要一个特定的文件,它会向所有正在运行的客户端询问该文件。但是,如果没有跟踪当前在线客户端的中间服务器,客户端如何知道所有可用的正在运行的客户端?

标签: java


【解决方案1】:

你想要multicast sockets

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

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

【讨论】:

  • 感谢@Anon 的澄清,但是设备没有通过 LAN/任何网络连接怎么办?他们是如何找到彼此的?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2019-11-19
    • 2011-08-16
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 2015-06-13
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多