我想开发简单的无服务器局域网聊天程序只是为了好玩。我怎样才能做到这一点 ?我应该使用什么类型的架构?
去年我从事 TCP、UDP 客户端/服务器应用程序项目。它很简单(服务器侦听某些端口/套接字,客户端连接到服务器的端口等。)但我不知道如何开发“无服务器”局域网聊天程序。我怎样才能做到这一点?UDP,TCP,组播,广播?还是程序的行为应该像服务器和客户端一样?
最简单的方法是使用 UDP 并在整个网络上简单地广播您的消息。更高级的版本是只使用广播来发现网络中的其他节点。
您还必须考虑在不通知网络其余部分的情况下处理节点的退出问题。
传播工具包对于您想要的东西可能有点矫枉过正,但是一个有趣的起点。
从简介:
Spread 是一个开源工具包,它提供了一种高性能的消息传递服务,该服务对跨局域网和广域网的故障具有弹性。Spread 用作分布式应用程序的统一消息总线,并提供高度调整的应用程序级多播、组通信和点对点支持。传播服务的范围从可靠的消息传递到具有传递保证的完全有序的消息。
Spread 可用于许多分布式应用程序,这些应用程序需要在各种成员子集之间进行高可靠性、高性能和鲁棒的通信。该工具包旨在封装异步网络的挑战性方面,并支持构建可靠且可扩展的分布式应用程序。
Spread 由与用户应用程序链接的库、在作为处理器组的一部分的每台计算机上运行的二进制守护程序以及各种实用程序和演示程序组成。
Spread提供的一些服务和好处:
Apples iChat 就是您所设想的产品的一个示例。它使用 Bonjour(苹果的零配置网络协议)来识别 LAN 上的对等点。然后,您可以与他们聊天或音频/视频聊天。
我不完全确定 Bonjour 在内部是如何工作的,但我知道它使用多播。客户端在 LAN 上“注册”服务,Bonjour 协议允许每个主机为给定服务提取主机目录(所有这些都无需中央管理)。