色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

Socket開發探秘--數據封包和拆包

在上篇《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開發探秘--數據封包和拆包,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 循化| 西峡县| 汉源县| 车致| 嵩明县| 时尚| 从化市| 米泉市| 察哈| 台东市| 宜阳县| 五河县| 德化县| 拜泉县| 昌江| 灵川县| 三都| 集贤县| 准格尔旗| 格尔木市| 冕宁县| 科尔| 海宁市| 马边| 乐平市| 库尔勒市| 高尔夫| 林州市| 横峰县| 虞城县| 芜湖县| 航空| 安西县| 监利县| 丹江口市| 娄烦县| 安塞县| 乌审旗| 苏尼特左旗| 乐至县| 灵丘县|