|
在上篇《Socket開發探秘--基類及公共類的定義 》中介紹過,所有受到的數據包,經過系統的預處理后,都會得到一個PreData的數據實體,該實體包含了協議頭、協議內容和所屬用戶的ID。PreData是定義了一個標準的協議數據格式,包含了協議關鍵字、協議內容、用戶標識的內容。
前面說了,我們數據是通過實體類作為載體的,我們知道,收到的Socket數據經過粗略的解析后,就是PreData類型的數據,這個是通用的數據格式,我們需要進一步處理才能轉化為所能認識的數據對象(實體類對象),同樣,我們發送數據的時候,內容部分肯定是按照一定協議規則串聯起來的數據,那么我們就需要把實體轉化為發送的數據格式。綜上所述,我們通過實體類,必須實現數據的發送和讀取的轉換。

/// 測試數據的實體類信息
///
public class TestDataRequest
{
#region MyRegion
///
/// 請求序列
///
public string seq;
///
/// 用戶帳號
///
public string userid;
///
/// 用戶密碼
///
public string psw;
#endregion
public TestDataRequest(string seq, string userid, string psw)
{
this.seq = seq;
this.userid = userid;
this.psw = psw;
}
public TestDataRequest()
{
}
///
/// 轉換Socket接收到的信息為對象信息
///
/// Socket接收到的信息
public TestDataRequest(string data)
{
string[] dataArray = null;
dataArray = NETStringUtil.UnPack(data);
if (dataArray != null && dataArray.Length > 0)
{
TestDataRequest newAnswerData = new TestDataRequest();
int i = 0;
this.seq = dataArray[i++];
this.userid = dataArray[i++];
this.psw = dataArray[i++];
}
}
///
/// 轉換對象為Socket發送格式的字符串
///
///
public override string ToString()
{
string data = "";
data = this.seq + "|" + this.userid + "|" + this.psw.ToString();
data = NETStringUtil.PackSend(DataTypeKey.TestDataRequest, data);
return data;
}
NET技術:Socket開發探秘--數據封包和拆包,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。