簡體   English   中英

C#在計算機之間傳遞套接字連接

[英]C# Passing Socket Connections between computers

我正在尋找一種簡單的方法來模擬仲裁應用程序以進行測試。 這個想法是創建三個單獨的節點(在三台不同的計算機上),這些節點將作為我正在測試的C#服務器套接字的客戶端。 可以說我正在嘗試建立4個客戶端-服務器連接,我希望仲裁者隨機確定哪個節點獲得哪個連接。 如果其中一個節點死亡(應用程序關閉),我希望仲裁程序將其連接傳遞給另一個節點。 當節點重新打開時,我希望仲裁器重新分配連接。 任何鏈接或示例代碼將非常有幫助。

套接字連接無法正常工作-它們是在兩台計算機之間創建的。 好消息是,創建新連接的成本並不高。

如果您想了解如何詳細使用它們,那么值得在Berkely Sockets上閱讀。

除非您的意思是您不在乎實際的連接對象,而是在乎連接的總數。 在那種情況下,您可以使用SemaphoreSemaphoreSlim來控制連接總數。 這樣一來,您便可以隨機分配連接,直到達到最大數量為止。 然后,當連接斷開時,您可以重新分配,直到信號量最大為止。 當有新客戶端連接時,您可以執行相反的過程-關閉與當前隨機客戶端的連接,並向新客戶端打開新客戶端,直到數量符合您的喜好為止。

讓我知道您是否打算這樣做-如果您正在考慮其他事情,我不想說得太深。

您不能真正在計算機之間“傳遞”套接字。 創建它們時,TCP / IP堆棧會分配所有無法傳輸的設置,例如TCP序列號等。 但是,您可以做的是使“仲裁器”與所有傳入的連接保持活動狀態。 然后,仲裁器將為您的節點創建另一個套接字,以便它充當兩者之間的代理。

您應該查找負載均衡的通用架構,這正是您想要的

暫無
暫無

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

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