簡體   English   中英

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

[英]C# TCP server and client with cross-communication requirement

我需要一些編程邏輯的反饋。

我正在使用C#開發TCP服務器,該服務器還將充當TCP客戶端。 基本上,客戶端設備(A)與我的TCP Server聯系並發送信息。 基於此,TCP服務器可以(或可以不)通過TCP與另一台服務器(Z)進行通信,向其發送一些數據, 有時還獲得響應,並將其傳遞回設備A。到目前為止,效果很好。 但是,有時Z創建與我的C#TCP服務器的新連接,並希望將一些數據發送到設備A。

這就是我在努力的目標。 我可以從Z中獲取數據,進行讀取,然后在讀取的文本中查看目標IP地址。 但是,如何將其發送到仍通過其自己線程上的TCPListener連接的設備A?

我可以使用靜態變量和“鎖定”機制讓線程尋找要發送到設備的東西,但是如果我還添加設備B和C,會發生什么情況?

我基本上需要某種方式,基於從Z在新連接上發送的數據,確定應在哪個線程上的哪個TCPListener上將數據發送到設備。

這讓我很忙,所以您可能擁有的任何鏈接或粗略的邏輯(不必是代碼)都將極大地幫助您。

是的,我搜索Google已有一段時間了,但是我發現的所有示例都比我要做的要簡單。

提前致謝!

您可以為此保留一個Dictionary<IPAddress,TCPClient>並將消息發送到目標IP。 確保通過接受新連接的同時Dictionary<IPAddress,List<TCPClient>>先前的連接,或者改為使用Dictionary<IPAddress,List<TCPClient>>來優雅地處理單個IP的多個客戶端。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM