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

{
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()
{
.........
}
///
///異步發(fā)送
///
public void BeginSend(SendStateObject sendState)
{
........
}
///
/// 同步發(fā)送。直接返回成功失敗狀態(tài)
///
public bool SendTo(string data)
{
.........
}
///
/// 主動檢查連接
///
public virtual void CheckConnect()
{
.............
}
protected virtual void OnRead(PreData data)
{
}
}
NET技術(shù):Socket開發(fā)探秘--基類及公共類的定義,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。