|
Socket開發是屬于通信底層的開發,.NET也提供了非常豐富的類來實現Socket的開發工作,本篇不是介紹這些基礎類的操作,而是從一個大的架構方面闡述Socket的快速開發工作,本篇以TCP模式進行程序的開發介紹,以期達到拋磚引玉的目的。
要掌握或者了解Socket開發,必須了解下面所述的場景及知識。
1、TCP客戶端,連接服務器端,進行數據通信
2、TCP服務器端,負責偵聽客戶端連接
3、連接客戶端的管理,如登陸,注銷等,使用獨立線程處理
4、數據接收管理,負責數據的接受,并處理隊列的分發,使用獨立線程處理,簡單處理后叫給“數據處理線程”
5、數據處理線程,對特定的數據,采用獨立的線程進行數據處理
6、數據的封包和解包,按照一定的協議進行數據的封裝和解包
針對以上內容,可以封裝以下功能的操作類作為共用基類:
1、BaseSocketClient,客戶端基類
2、BaseSocketServer,TCP服務器管理基類
3、BaseClientManager,連接客戶端管理類
4、BaseReceiver,數據接收處理類
5、ThreadHandler,數據獨立線程處理類
6、PreData、DataTypeKey、Sign分別是定義數據的基礎格式、協議標識、分隔符號等,另外我們定義需要發送的實體類信息,發送和接收通過實體類進行數據轉換和解析。
以上類是基類,不能直接使用,在服務器端和客戶端都要繼承相應的類來完成所需要的工作。
BaseSocketClient只要負責客戶端的鏈接、斷開、發送、接收等操作,大致的定義如下:

{
public BaseSocketClient()
{
_Name = this.GetType().Name;
}
public BaseSocketClient(Socket socket) : this()
{
_socket = socket;
IPEndPoint ipAndPort = (IPEndPoint)socket.RemoteEndPoint;
_IP = ipAndPort.Address.ToString();
_port = ipAndPort.Port;
}
///
/// 斷開連接
///
public virtual void DisConnect()
{
.........
}
///
/// 主動連接
///
public virtual void Connect(string ip, int port)
{
........
}
///
/// 開始異步接收
///
public void BeginReceive()
{
.........
}
///
/// 開始同步接收
///
public void StartReceive()
{
.........
}
///
///異步發送
///
public void BeginSend(SendStateObject sendState)
{
........
}
///
/// 同步發送。直接返回成功失敗狀態
///
public bool SendTo(string data)
{
.........
}
///
/// 主動檢查連接
///
public virtual void CheckConnect()
{
.............
}
protected virtual void OnRead(PreData data)
{
}
}
NET技術:Socket開發探秘--基類及公共類的定義,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。