我正在開發使用c#的聊天應用程序。我已經完成了服務器和客戶端之間進行通信所需的一切,但是我不確定該怎麼做才能使客戶端能夠相互通信。客戶端與客戶端的通信在與很多客戶端的套接字編程中
我在互聯網上搜索了很多。我以前實際上詢問過幾乎相同的問題。
Client to client messaging in socket programming
現在我知道有兩個接近的工作要做。
第一個是客戶端到客戶端的直接通信,其中一個客戶端充當另一個客戶端的服務器,但由於系統防火牆可能阻止客戶端充當服務器,所以它有一些缺點。
第二種方法是讓服務器通過接收來自其中一個客戶端的消息並將其發送給另一個客戶端來進行通信。我個人更喜歡這一個,因爲我認爲它必須更可靠,我們可以絕對確定該消息將被髮送和接收。如果我錯了,請讓我知道。
但是,我的問題是,我不知道客戶端應該如何讓服務器知道他想與之通信的另一個客戶端。 更具體地說,假設客戶端A想要與客戶端B通話。所以他使用用戶名或客戶端B的IP地址將他的請求發送到服務器。現在,服務器應該如何找到客戶端B?它是否必須保留客戶列表並使用for語句搜索客戶端B?如果有數百或數千甚至數十萬個客戶端連接到服務器會怎麼樣?
如果我沒有清楚解釋我的問題,請讓我知道。任何幫助表示感謝。
你似乎在你的問題的所有答案的消息,將消息發送到(客戶端B),共同提高。你正確地關注需求。你必須跟蹤每個客戶。如果服務器有成千上萬的連接,你應該開始尋找某種負載平衡。 – itsme86
雖然問題很廣,但非常真實和正確。它解決了任何人都可以面對的問題,再加上他以非常精確的方式提出了問題,我不知道爲什麼此線程關閉以便進一步討論。 –
我認爲這個線程一定是打開的。我偶然找到了一個類似的解決方案,但我也可以爲這個特定問題提供一個有用的答案。如果討論是開放的,這可能會有很多建設性的幫助。 –