成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iPhone客戶端與服務器間粘包問題解決代碼實現案例

移動開發 iOS
iPhone客戶端與服務器間粘包問題解決代碼實現案例是本文要介紹的內容,如果您的iPhone App要與服務器交換數據,服務器連續發來兩個消息時就可能出現粘包的情況:一號消息準確接收到了,但二號消息接收的不完整。

iPhone客戶端服務器間粘包問題解決代碼實現案例是本文要介紹的內容,如果您的iPhone App要與服務器交換數據,服務器連續發來兩個消息時就可能出現粘包的情況:一號消息準確接收到了,但二號消息接收的不完整。你可以嘗試通過CocoaChina論壇的這篇帖子提供的代碼解決iPhone客戶端與服務器間粘包問題。

  1. void CNetClient::HandleMsg( char *buf ,int nSize )  
  2. {  
  3.         m_nRecvByteCount += nSize;  
  4.         if( m_RecvTimer.GetMilliseconds( ) >= 1000 )  
  5.         {  
  6.             // 保存最近十次的網絡包流量大小  
  7.             m_RecvByte.AddToTail( m_nRecvByteCount );  
  8.             if( m_RecvByte.Count( ) > 10 )  
  9.                 m_RecvByte.Remove( 0 );  
  10.             m_nRecvByteCount = 0;  
  11.             m_RecvTimer.Start( );  
  12.         }  
  13.     m_PackBuffer.Put( buf,nSize);  
  14.  
  15.     int packsize=0;  
  16.  
  17.     int bufsize=m_PackBuffer.TellPut() - m_PackBuffer.TellGet();  
  18.     while ( TRUE )  
  19.     {  
  20.         PACKET_COMMAND *pPack = ( PACKET_COMMAND *)m_PackBuffer.PeekGet( );  
  21.         if (pPack)  
  22.         {  
  23.                         // 查看包頭是否完整  
  24.                         if( bufsize<PACKET_HEAD_SIZE)  
  25.                         {  
  26.                             break;      
  27.                         }  
  28.                         packsize=pPack->GetSize();  
  29.                         // 查看是否是完整的網絡包  
  30.                         if( bufsize<packsize )  
  31.                         {  
  32.                             break;      
  33.                         }  
  34.           
  35.                 if (!packsize || packsize>sizeof(PACKET_COMMAND))  
  36.                 {  
  37.                     m_PackBuffer.SeekGet(SEEK_HEAD,0 );  
  38.                     m_PackBuffer.SeekPut(SEEK_HEAD,0 );  
  39.                     break;  
  40.                 }  
  41.           
  42.                         PACKET_COMMAND pack;  
  43.                 m_PackBuffer.Get( &pack, packsize);  
  44.                 HandlePacket(&pack,packsize);  
  45.           
  46.                 bufsize = m_PackBuffer.TellPut() - m_PackBuffer.TellGet();  
  47.                 if (!bufsize)  
  48.                 {  
  49.                     m_PackBuffer.SeekGet(SEEK_HEAD,0);  
  50.                     m_PackBuffer.SeekPut(SEEK_HEAD,0);  
  51.                     break;  
  52.                 }  
  53.         }  
  54.     }  
  55.     if ( m_PackBuffer.TellGet() == m_PackBuffer.TellPut() )  
  56.     {  
  57.         m_PackBuffer.SeekGet(SEEK_HEAD,0);  
  58.         m_PackBuffer.SeekPut(SEEK_HEAD,0);  
  59.     }      

小結:iPhone客戶端服務器間粘包問題解決代碼實現案例的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: starming社區
相關推薦

2010-05-20 10:31:37

IIS服務器

2021-01-13 10:18:29

SocketNetty粘包

2018-07-17 09:59:10

PythonUDP服務器

2018-12-18 10:47:37

2009-09-17 16:38:02

WSUS服務器

2019-08-28 15:19:15

PythonTCP服務器

2009-10-28 11:27:49

linux服務器安全

2010-05-17 15:27:34

IIS服務器

2010-05-20 13:48:17

IIS服務器

2010-12-31 16:31:08

服務器常見問題

2014-01-17 15:23:55

Nagios

2024-02-22 13:47:40

2011-08-18 16:03:34

iPhone上傳圖片

2011-06-09 10:51:26

Qt 服務器 客戶端

2009-08-18 12:51:19

服務器+客戶端

2010-05-20 11:06:01

IIS服務器

2009-12-25 10:47:17

DNS服務器

2009-09-16 16:09:41

NIS服務器客戶端NIS

2018-12-19 10:31:32

客戶端IP服務器

2009-06-10 16:25:02

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕亚洲无线 | 午夜精品导航 | 日韩欧美在线观看视频 | 久久久久国产一级毛片高清网站 | 欧美精品一区二区在线观看 | 在线观看视频你懂得 | 一区中文字幕 | 国产欧美精品一区二区色综合朱莉 | 日韩精品在线看 | 狠狠干美女 | 狠狠干狠狠操 | 99热在这里只有精品 | 日韩一区二区三区视频 | 国产福利小视频 | 国产精品福利在线观看 | 亚洲精品一区二区 | 欧美综合一区二区 | 日本又色又爽又黄又高潮 | 国产一区二区三区视频 | 国产精品视频导航 | 久久精品成人 | 亚洲视频www | 日韩欧美一区二区三区在线播放 | 欧美一区免费在线观看 | 91视频国产一区 | 国产精品一区二区在线 | 国产日韩欧美一区二区在线播放 | 亚洲欧美日韩在线一区二区 | 国产视频观看 | 国产精品成人品 | 国产精品99久久久久久久久久久久 | 久久国产精品首页 | 欧美视频日韩 | 国产精品免费一区二区三区四区 | 日日碰碰 | 国产精品一区二区福利视频 | 91视频18| 久久亚洲欧美日韩精品专区 | 国产精品视频一二三区 | 91福利影院 | 国产精品99久久久久久宅男 |