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

时间:2011-02-25 03:41:03

标签: c# tcp

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

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

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

我可以使用静态变量和“锁定”机制让线程寻找要发送给设备的东西,但如果我添加设备B& C也是?

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

它正在努力,所以你可能拥有的任何链接或粗略的逻辑(不一定是代码)都会有很大的帮助。

是的,我一直在搜索谷歌一段时间,但我找到的所有例子都比我需要做的更简单。

提前致谢!

1 个答案:

答案 0 :(得分:1)

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