代码之家  ›  专栏  ›  技术社区  ›  caltuntas

开发无服务器局域网聊天程序帮助!

  •  6
  • caltuntas  · 技术社区  · 15 年前

    我想开发简单的无服务器局域网聊天程序只是为了好玩。我该怎么做?我应该使用什么类型的体系结构?

    去年我参与了TCP、UDP客户机/服务器应用程序项目。它很简单(服务器监听特定端口/套接字,客户机连接到服务器端口等),但我不知道如何开发“无服务器”局域网聊天程序。我该怎么做?UDP、TCP、多播、广播?或者程序的行为应该像服务器和客户端一样吗?

    3 回复  |  直到 15 年前
        1
  •  10
  •   Stefan Schmidt    15 年前

    更高级的版本是只使用广播来发现网络中的其他节点。

    • 每个节点都维护一个已知节点的列表。
    • 消息通过TCP发送到所有已知的对等方。
    • 当一个节点启动时,它会发送UDP广播以发现其他节点。
    • 当一个节点退出网络时,它会发送另一个广播,以通知其余节点他们应该从其列表中删除已退出的客户端。

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

        2
  •  1
  •   frankodwyer    15 年前

    spread toolkit 对于你想要的可能有点过分,但这是一个有趣的起点。

    从简介中:


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

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

    • 可靠且可扩展的消息传递和组通信。
    • 一个非常强大但简单的API简化了分布式体系结构的构建。
    • 易于使用、部署和维护。
    • 从一个局域网到复杂广域网的高度可扩展性。
    • 在出现机器故障、进程崩溃和恢复以及网络分区和合并时实现消息可靠性。
    • 为消息提供一系列可靠性、顺序和稳定性保证。
    • 强调鲁棒性和高性能。
        3
  •  0
  •   jdizzle    15 年前

    苹果iChat就是您所设想的产品的一个例子。它使用Bonjour(苹果的zero-conf网络协议)来识别局域网上的对等点。然后,您可以与他们聊天或音频/视频聊天。