簡體   English   中英

在C#中創建客戶端/服務器聊天客戶端

[英]Creating a Client/Server Chat Client in C#

我想創建一個簡單的客戶端/服務器聊天應用程序。

這個想法是,當一個客戶端向服務器發送消息時,服務器會將更改通知其他客戶端。

無需解決防火牆問題的最佳方法是什么?

可以通過http上的Web服務完成嗎?

帶有wsHttpBindingbasicHttpBinding WCF服務可與防火牆配合使用。 您將面臨的主要問題是服務器通知客戶端,可能需要修改其防火牆設置。

服務器需要在端口上偵聽。 該端口需要通過防火牆進行訪問。 這兩件事是不可避免的。 通常,您將讓服務器偵聽您組成的端口號(大於1024以避免沖突)。 然后,您將讓防火牆將該端口傳遞到服務器。

如果您期望普通人托管服務器,那么事情將有些棘手。 您需要他們在其家用路由器上啟用端口轉發,或者需要具有集中式服務器以進行配對。

這就是Skype或Halo的工作方式(Skype將中央服務器稱為超節點)。 這是一個例子。

C是中央Skype服務器。 A是愛麗絲,B是鮑勃。 愛麗絲想給鮑勃打電話。

C監聽某個端口,C的防火牆允許它通過
A登錄到Skype,連接到C
B登錄到Skype,連接到C
A向C發送一條消息,稱他們想呼叫B
C這樣向B發送一條消息(因為B已經連接好了)。

呼叫接通后,A和B將所有消息發送給C,C將它們轉發到目的地。

您可以在服務器上運行HTTP服務器,並在每個客戶端上保持打開狀態。

您可以使用COMET樣式的Web服務來完成此操作:

COMET(編程)

如果使用WCF構建服務,則將實現在端口80上運行帶有雙工綁定的服務。

雙工服務(MSDN)

暫無
暫無

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

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