tcp - 开发无服务器局域网聊天程序求助!

标签 tcp udp

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

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

最佳答案

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

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

您还必须考虑在不通知网络其余部分的情况下处理节点的退出。

关于tcp - 开发无服务器局域网聊天程序求助!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/383731/

相关文章:

c - 如何强制部分写入来测试网络服务器

c# - async await 与 TcpClient 的用法

c# - 毫无异常(exception)地卡在 Socket.Receive 上

c - 是否允许从截断的有效负载计算 UDP 校验和?

python - 如何在 python 中处理 UDP 套接字客户端

Python - 简单的 TCP/IP S/C : Not all strings converted error for a print statement

php - nginx - 让 PHP 通过 TCP 而不是套接字

c# - 监听一系列 UDP 端口

java - 在java TCP连接中绑定(bind)一个接口(interface)

c# - .net 中的双向/环回 UDP