gpt4 book ai didi

具有交叉通信要求的 C# TCP 服务器和客户端

转载 作者:可可西里 更新时间:2023-11-01 02:52:57 26 4
gpt4 key购买 nike

我需要一些关于编程逻辑的反馈。

我正在使用 C# 开发 TCP 服务器,它也将充当 TCP 客户端。基本上,客户端设备 (A) 联系我的 TCP 服务器并发送信息。基于此,TCP 服务器可能(或可能不会)通过 TCP 与另一台服务器 (Z) 通信,向其发送一些数据,并且有时会收到响应并将其传回设备 A。到目前为止很好,这很好用。但是,有时 Z 会创建一个到我的 C# TCP 服务器的新连接,并想向设备 A 发送一些数据。

这就是我正在努力解决的问题。我可以从 Z 获取数据,读取它并在读取的文本中查看目标 IP 地址。但是我如何将它发送到设备 A,它仍然通过它自己的线程上的 TCPListener 连接?

我可以使用静态变量和“锁定”机制让线程查找要发送到设备的内容,但是如果我也添加设备 B 和 C 会怎样?

我基本上需要一些方法,根据在新连接上从 Z 发送的数据,确定应该在哪个线程上将数据发送到设备的 TCPListener。

它正在影响我的头脑,因此您可能拥有的任何链接或粗略的逻辑(不必是代码)都会有很大帮助。

是的,我已经在 Google 上搜索了一段时间,但我找到的所有示例都比我需要做的要简单。

提前致谢!

最佳答案

你可以保留一个Dictionary<IPAddress,TCPClient>为此目的,并将消息发送到目标 IP。确保您通过在接受新连接时删除以前的连接或使用 Dictionary<IPAddress,List<TCPClient>> 来优雅地处理来自单个 IP 的多个客户端。

关于具有交叉通信要求的 C# TCP 服务器和客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5113354/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com