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

Socket開(kāi)發(fā)探秘--數(shù)據(jù)封包和拆包

在上篇《Socket開(kāi)發(fā)探秘--基類及公共類的定義 》中介紹過(guò),所有受到的數(shù)據(jù)包,經(jīng)過(guò)系統(tǒng)的預(yù)處理后,都會(huì)得到一個(gè)PreData的數(shù)據(jù)實(shí)體,該實(shí)體包含了協(xié)議頭、協(xié)議內(nèi)容和所屬用戶的ID。PreData是定義了一個(gè)標(biāo)準(zhǔn)的協(xié)議數(shù)據(jù)格式,包含了協(xié)議關(guān)鍵字、協(xié)議內(nèi)容、用戶標(biāo)識(shí)的內(nèi)容。
前面說(shuō)了,我們數(shù)據(jù)是通過(guò)實(shí)體類作為載體的,我們知道,收到的Socket數(shù)據(jù)經(jīng)過(guò)粗略的解析后,就是PreData類型的數(shù)據(jù),這個(gè)是通用的數(shù)據(jù)格式,我們需要進(jìn)一步處理才能轉(zhuǎn)化為所能認(rèn)識(shí)的數(shù)據(jù)對(duì)象(實(shí)體類對(duì)象),同樣,我們發(fā)送數(shù)據(jù)的時(shí)候,內(nèi)容部分肯定是按照一定協(xié)議規(guī)則串聯(lián)起來(lái)的數(shù)據(jù),那么我們就需要把實(shí)體轉(zhuǎn)化為發(fā)送的數(shù)據(jù)格式。綜上所述,我們通過(guò)實(shí)體類,必須實(shí)現(xiàn)數(shù)據(jù)的發(fā)送和讀取的轉(zhuǎn)換。

代碼    /// 
    
/// 測(cè)試數(shù)據(jù)的實(shí)體類信息
    
///  
    public class TestDataRequest
    {
        
#region MyRegion

        
/// 
        
/// 請(qǐng)求序列
        
///  
        public string seq;
        
/// 
        
/// 用戶帳號(hào)
        
///  
        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()
        {
        }

        
/// 
        
/// 轉(zhuǎn)換Socket接收到的信息為對(duì)象信息
        
/// 
        
/// 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++];
            } 
        }

        
/// 
        
/// 轉(zhuǎn)換對(duì)象為Socket發(fā)送格式的字符串
        
/// 
        
/// 
        public override string ToString()
        {
            
string data = "";
            data 
= this.seq + "|" + this.userid + "|" + this.psw.ToString();
            data 
= NETStringUtil.PackSend(DataTypeKey.TestDataRequest, data);
            
return data;
        }

NET技術(shù)Socket開(kāi)發(fā)探秘--數(shù)據(jù)封包和拆包,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 玉龙| 宜春市| 彝良县| 乾安县| 九龙城区| 哈巴河县| 安康市| 贺兰县| 韶关市| 南昌市| 尤溪县| 望城县| 交口县| 囊谦县| 庄河市| 邛崃市| 恭城| 四子王旗| 二连浩特市| 仙游县| 钟山县| 南通市| 宝清县| 托克托县| 左云县| 宾川县| 竹溪县| 石城县| 滕州市| 尖扎县| 和平县| 沁水县| 沅江市| 大兴区| 沅陵县| 郧西县| 沂水县| 枝江市| 饶平县| 阳信县| 瓦房店市|