iOS socket 自定義協(xié)議

/*
 typedef struct NetStruct_twoData
 {
 int header;//包頭
 int length;//包總長(zhǎng)度
 int cmd;//信號(hào)令
 int num;//數(shù)據(jù)條數(shù)
 int dataNum;//字段數(shù)
 int dataType_one;//字段類型
 int dataType_two;//字段類型
 int dataLength_one;//字段長(zhǎng)度
 int dataLength_two;//字段長(zhǎng)度
 int data[50];//字段
 Byte verify;//校驗(yàn)
 Byte version;//版本號(hào)
 int tail;//包尾
 */

事例代碼(發(fā)送一個(gè)心跳包):

- (NSData*)heartBeat
{
    unsigned int   header = 0x12345678;
    unsigned int length = (unsigned int)(8*4+2+4);
    unsigned int cmd = 0x00000000;
    unsigned int num = 0x00000001;
    unsigned int datanum = 0x00000001;
    unsigned int dataType_one = 0x00000002;
    unsigned int dataLength_one = 4;
   // 大小端轉(zhuǎn)換
    header = CFSwapInt32BigToHost(header);
    length = CFSwapInt32BigToHost(length);
    cmd = CFSwapInt32BigToHost(cmd);
    num = CFSwapInt32BigToHost(num);
    datanum = CFSwapInt32BigToHost(datanum);
    dataType_one = CFSwapInt32BigToHost(dataType_one);
    dataLength_one = CFSwapInt32BigToHost(dataLength_one);
    
    NSMutableData * contentData = [[NSMutableData alloc]init];
    [contentData appendBytes:&header length:4];
    [contentData appendBytes:&length length:4];
    [contentData appendBytes:&cmd length:4];
    [contentData appendBytes:&num length:4];
    [contentData appendBytes:&datanum length:4];
    [contentData appendBytes:&dataType_one length:4];
    [contentData appendBytes:&dataLength_one length:4];
    [contentData appendBytes:"abcdefghui" length:4];
    
    Byte * dataString = (Byte *)[contentData bytes];
    Byte eox;
    memcpy(&eox, dataString, 1);
    for (NSUInteger i = 1 ; i < contentData.length; i ++) {
        eox = eox^dataString[i];
    }
    [contentData appendBytes:&eox length:1];
    
    
    unsigned int version = 0x01;
    unsigned int tail = 0x87654321;
    
    tail = CFSwapInt32BigToHost(tail);
    
    [contentData appendBytes:&version length:1];
    [contentData appendBytes:&tail length:4];
    
    return contentData;
}

具體調(diào)用代碼:
結(jié)合第三方的GCDAsyncSocket開源代碼,保持心跳包

GCDAsyncSocket * _sendSocket;
//創(chuàng)建一個(gè)后臺(tái)隊(duì)列等待接受數(shù)據(jù)
 dispatch_queue_t dQueue = dispatch_queue_create("socket queue", NULL);
 if (_sendSocket == nil) {
      _sendSocket  = [[GCDAsyncSocket alloc]initWithDelegate:self delegateQueue:dQueue socketQueue:nil];
 }

[_sendSocket writeData:data withTimeout:-1 tag:10];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末矮冬,一起剝皮案震驚了整個(gè)濱河市豁鲤,隨后出現(xiàn)的幾起案子轧铁,更是在濱河造成了極大的恐慌乎赴,老刑警劉巖摔竿,帶你破解...
    沈念sama閱讀 210,835評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件间坐,死亡現(xiàn)場(chǎng)離奇詭異灾挨,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)竹宋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門劳澄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蜈七,你說我怎么就攤上這事秒拔。” “怎么了飒硅?”我有些...
    開封第一講書人閱讀 156,481評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵砂缩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我三娩,道長(zhǎng)庵芭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,303評(píng)論 1 282
  • 正文 為了忘掉前任雀监,我火速辦了婚禮双吆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘会前。我一直安慰自己好乐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,375評(píng)論 5 384
  • 文/花漫 我一把揭開白布回官。 她就那樣靜靜地躺著曹宴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪歉提。 梳的紋絲不亂的頭發(fā)上笛坦,一...
    開封第一講書人閱讀 49,729評(píng)論 1 289
  • 那天区转,我揣著相機(jī)與錄音,去河邊找鬼版扩。 笑死废离,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的礁芦。 我是一名探鬼主播蜻韭,決...
    沈念sama閱讀 38,877評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼柿扣!你這毒婦竟也來(lái)了肖方?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,633評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤未状,失蹤者是張志新(化名)和其女友劉穎俯画,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體司草,經(jīng)...
    沈念sama閱讀 44,088評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡艰垂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,443評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了埋虹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猜憎。...
    茶點(diǎn)故事閱讀 38,563評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖搔课,靈堂內(nèi)的尸體忽然破棺而出胰柑,到底是詐尸還是另有隱情,我是刑警寧澤辣辫,帶...
    沈念sama閱讀 34,251評(píng)論 4 328
  • 正文 年R本政府宣布旦事,位于F島的核電站,受9級(jí)特大地震影響急灭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谷遂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,827評(píng)論 3 312
  • 文/蒙蒙 一葬馋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肾扰,春花似錦畴嘶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,712評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至偷拔,卻和暖如春蒋院,著一層夾襖步出監(jiān)牢的瞬間亏钩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,943評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工欺旧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留姑丑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,240評(píng)論 2 360
  • 正文 我出身青樓辞友,卻偏偏與公主長(zhǎng)得像栅哀,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子称龙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,435評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容