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