我想創建一個簡單的客戶端/服務器聊天應用程序。在C#中創建客戶端/服務器聊天客戶端
這個想法是,當一個客戶端向服務器發送消息時,服務器通知其他客戶端進行更改。
沒有處理防火牆問題,最好的方法是什麼?
可以使用網絡服務完成http
嗎?
我想創建一個簡單的客戶端/服務器聊天應用程序。在C#中創建客戶端/服務器聊天客戶端
這個想法是,當一個客戶端向服務器發送消息時,服務器通知其他客戶端進行更改。
沒有處理防火牆問題,最好的方法是什麼?
可以使用網絡服務完成http
嗎?
WCF服務與wsHttpBinding
或basicHttpBinding
與防火牆很好玩。您將面臨的主要問題是服務器通知客戶端,可能需要修改某些防火牆設置。
您可以在服務器上運行HTTP服務器,並在每個客戶端上保留一個連接。
你可以做到這一點使用COMET風格的Web服務:
如果您使用WCF建立你的服務,你會實現一個具有雙面打印裝訂在80端口上運行的服務。
的服務器需要一個端口上偵聽。該端口需要通過防火牆進行訪問。這兩件事情是不可避免的。通常你會讓你的服務器監聽你組成的端口號(大於1024以避免衝突)。然後,您將讓防火牆將該端口傳遞給您的服務器。
如果你期望普通人能夠託管一臺服務器,那麼事情就會有點棘手。無論您是需要它們在其家庭路由器上啓用端口轉發,還是需要有一箇中央服務器來進行配對。
這就是Skype或Halo的工作原理(Skype將中央服務器稱爲超級節點)。這是一個例子。
C是Skype的中央服務器。 A是Alice和B是bob。愛麗絲想打電話給鮑勃。
Ç監聽某個端口上和C的防火牆允許通過
A登錄到Skype的連接到C
B登錄到Skype的,connecticg到C
A發送消息到C說,他們希望B鍵
C發送一條消息給B(因爲B已經連接好了)這樣說。
呼叫連接後,A和B將所有消息發送給C,C將它們轉發到目的地。