如何在 C# 中处理多个客户端 TCP/IP

Posted

技术标签:

【中文标题】如何在 C# 中处理多个客户端 TCP/IP【英文标题】:How to deal with multiple client TCP/IP in C# 【发布时间】:2021-04-28 17:24:01 【问题描述】:

我正在本地网络上启动一个小型文件共享项目。用户必须能够(暂时)向他选择的另一个用户发送一个句子,连接到我们家的同一个 wifi。问题是我不能创建一个有多个客户端的服务器,因为任何时候服务器都可能停止。

例如:假设我有三台笔记本电脑:A、B 和 C。A 是服务器,与 B 和 C 通信,B 和 C 也通过 A 进行通信。但我必须能够关闭 A 但保持 B 和 C 之间的连接,以便他们可以继续相互发送句子。

我已经开始在 C# 中创建一个将在后台运行的 Windows 服务。但是除了让A、B、C既是客户端又是服务端,还有什么办法吗?

谢谢

【问题讨论】:

改为点对点广播? 看看是否有人已经发明了那个***,例如github.com/jchristn/WatsonMesh 【参考方案1】:

据我所知,网络中的节点既是服务器又是客户端是没有限制的。 如果该系统有 IP 和开放的端口,它可以像服务器一样工作。它应该只在该端口上侦听传入请求。同时它也可以连接到另一台服务器。 如果系统 B 知道系统 C 的 IP 和端口,它们就可以相互通信。 但是在像消息传递应用程序这样的实际情况下,客户端应该向服务器发送消息,因为每次客户端连接到网络时,它都会获得新的 IP。 因此,如果这在您的网络中不是问题,您可以做任何您想做的事情。但如果是这样,您可以在客户端之间定义一个简单的协议,在连接开始时,它们会交换 IP,这样如果服务器关闭,它们就可以相互通信。

【讨论】:

以上是关于如何在 C# 中处理多个客户端 TCP/IP的主要内容,如果未能解决你的问题,请参考以下文章

如何与服务器同时处理多个请求

C# TCP/IP中的客户端和服务器在局域网或外网怎么通信呀?谁有完整的例子呀.

要利用DHCP服务器分配IP地址,网卡的TCP/IP协议应该如何设置

LWIP网络开发 | TCP/IP协议簇二

自动打开命名管道和 tcp\ip

webpush 如何在 TCP/IP 网络层工作