【发布时间】:2017-11-25 11:54:14
【问题描述】:
我想建立一个相互连接的客户端网络。基本上是一个分散的网络,我不知道该怎么做(他们应该能够互相发送数据)。我尝试了 SSLServers + Sockets 网络,但我不确定它是否适用于密钥库。
所以:
- 有没有人建议如何做到这一点?
- 你会推荐什么?
【问题讨论】:
标签: java networking
我想建立一个相互连接的客户端网络。基本上是一个分散的网络,我不知道该怎么做(他们应该能够互相发送数据)。我尝试了 SSLServers + Sockets 网络,但我不确定它是否适用于密钥库。
所以:
【问题讨论】:
标签: java networking
我不确定您问的是架构还是技术,但您可能想看看这个:
据我所知,这种去中心化的网络形式被称为点对点网络或 P2P。
坦率地说,背后的想法是拥有一个注册节点来维护对等组和网络的其他共享偏好。所有客户端都知道注册表地址(默认设置),每个客户端都会在启动时尝试连接。在每个客户端连接到注册表后,它会尝试注册自己并获取其他可用客户端的列表。大多数情况下,客户端会放松与注册表的连接,仅尝试按需(或以定期方式)连接。当一个客户端想要下载某个文件时,它会尝试获取可用资源列表以及共享特定文件的对等方。
由于在这种网络中,每个节点都可能从另一个节点获得服务或为其他节点提供服务,因此您的节点代码可能同时具有 ServerSocket 和 Socket 来支持这个想法。如果您尝试以本机方式实现它,您应该处理线程以维持对其他客户端的并发服务并从其他节点获取服务。
在一个高可用的 P2P 网络中,有多个注册节点来维护网络的骨架。此外,即使在默认注册节点完全失败的情况下,每个客户都可以自愿扮演注册角色,以帮助网络保持可用。
这种网络基于共享的态度,所以当它启动时,它开始一天天增长,一段时间后,你不能简单地通过关闭网络的第一个主骨架来关闭它。
这只是一个开始的想法,但随着它的发展,您可能希望添加更复杂的功能以拥有强大且可扩展的网络。
这里有一个很好的教程来实现这样的网络: https://www.javaworld.com/article/2071877/enterprise-java/peer-to-peer-applications-made-easy.html
希望对您有所帮助。
【讨论】: