开发无服务器Lan聊天程序帮助!

时间:2008-12-20 20:54:44

标签: tcp udp

我想开发简单的无服务器局域网聊天程序,只是为了好玩。我怎样才能做到这一点 ?我应该使用什么类型的架构?

去年我参与过TCP,UDP客户端/服务器应用程序Project.It很简单(服务器侦听某些端口/套接字,客户端连接到服务器端口等)。但我不知道如何开发“无服务器” “局域网聊天程序。我怎样才能做到这一点? UDP,TCP,多播,广播?或者程序应该像服务器和客户端一样吗?

3 个答案:

答案 0 :(得分:10)

最简单的方法是使用UDP并简单地在整个网络上广播您的消息。 更高级的版本只是使用广播来发现网络中的其他节点。

  • 每个节点都维护一个已知对等列表。
  • 使用TCP将消息发送给所有已知对等方。
  • 节点启动时,会发出UDP广播以发现其他节点。
  • 当节点收到发现广播时,它会将“自身”发送到广播源,以使其自我知晓。接收节点将广播公司添加到它自己的已知对等列表中。
  • 当节点退出网络时,它会发送另一个广播,以通知其余节点,他们应该从列表中删除已删除的客户端。

您还必须考虑处理节点的丢弃,而不通知网络的其余部分。

答案 1 :(得分:1)

spread toolkit可能对你想要的东西有点矫枉过正,但这是一个有趣的起点。

来自blurb:


Spread是一个开源工具包,提供高性能的消息服务,可以抵御本地和广域网的故障。 Spread用作分布式应用程序的统一消息总线,并提供高度调整的应用程序级多播,组通信和点对点支持。传播服务范围从可靠的消息传递到具有交付保证的完全有序的消息。

Spread可用于许多分布式应用程序,这些应用程序需要高可靠性,高性能以及各成员子集之间的强大通信。该工具包旨在封装异步网络的挑战性方面,并支持构建可靠且可扩展的分布式应用程序。

Spread包含一个用户应用程序链接的库,一个在处理器组的每台计算机上运行的二进制守护程序,以及各种实用程序和演示程序。

Spread提供的一些服务和好处:

  • 可靠且可扩展的消息传递和群组通信。
  • 一个非常强大但简单的API简化了分布式体系结构的构建。
  • 易于使用,部署和维护。
  • 从一个局域网到复杂的广域网,具有高度可扩展性。
  • 支持数千个拥有不同成员的群组。
  • 在出现计算机故障,进程崩溃和恢复以及网络分区和合并时启用消息可靠性。
  • 为消息提供一系列可靠性,排序和稳定性保证。
  • 强调稳健性和高性能。
  • 完全分布式算法,没有中心故障点。

答案 2 :(得分:0)

苹果iChat就是您想象的产品的一个例子。它使用Bonjour(苹果的零配置网络协议)来识别LAN上的对等体。然后,您可以与他们聊天或进行音频/视频聊天。

我不完全确定Bonjour是如何在里面工作的,但我知道它使用多播。客户端在LAN上“注册”服务,Bonjour协议允许每个主机为特定服务提取主机目录(所有这些都没有集中管理)。