由於您正在規劃TCP(因爲您想要州),您需要制定一項戰略。您將獲得大量關於建立連接和來回移動某些數據的信息。谷歌會給你比你能處理的更多。如果沒有做所有的工作,這裏有幾個步驟來讓你面向你。
1)連接註冊 - 當客戶端上網並想與服務器通信時,首先需要說的是「嘿,我在這裏,想要扮演一些骰子。」這個初始握手可以是用於心跳和/或交易的連接ID。如果服務器打開,服務器將使用它來標識數據和相應的線程。
2)心跳 - 現在客戶已經註冊了服務器,客戶負責提供心跳,說它仍然存在,並且仍然計劃繼續工作。通常每3到10秒就好。
3)開發請求/響應協議 - 對於「每個命令」,將會有一個正式的過程。這個正式的過程將包括連接標識,但也包括一個請求標識。客戶端將不會接受響應,除非它收到相應的請求ID。此外,每個請求都需要成功或失敗響應來確定它是否符合API或不符合要求。在請求內將執行命令或操作。有些人使用int來分派命令id,然後在id上使用開關來調用入口點方法(cmd id = 1是connect(),cmd id = 2是rolldice()等)。您可能包含額外的有效負載,用於識別命令的結果。
總之,1是握手,2是保持活動,3是來回傳遞數據。
現在無論使用套接字還是WCF,我都建議對TcpClient編程有一個基本的瞭解,然後使用WCF運行。你會驚訝於簡單的套接字編程是如何的,但開銷是一個殺手。沒有什麼可以被嚇倒的。協調調用,線程以及更不用說安全性是很多工作。另一方面,WCF確實減少了一些開銷。
我想看看這個問題...
How to use socket based client with WCF (net.tcp) service?
提示:不要相信客戶端。通常,客戶端應該要求服務器擲骰子,服務器會將滾動值發送給所有客戶端。 –
我建議你看看WCF。 WCF初學者的好書是[WCF Step By Step](http://shop.oreilly.com/product/0790145302403.do)。如果您想要詳細瞭解您正在嘗試執行的操作,可以閱讀聊天客戶端示例。 Wcf還將簡化認證授權流程。 – Garvin