自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iPhone客戶端與服務(wù)器間粘包問題解決代碼實(shí)現(xiàn)案例

移動(dòng)開發(fā) iOS
iPhone客戶端與服務(wù)器間粘包問題解決代碼實(shí)現(xiàn)案例是本文要介紹的內(nèi)容,如果您的iPhone App要與服務(wù)器交換數(shù)據(jù),服務(wù)器連續(xù)發(fā)來兩個(gè)消息時(shí)就可能出現(xiàn)粘包的情況:一號(hào)消息準(zhǔn)確接收到了,但二號(hào)消息接收的不完整。

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

  1. void CNetClient::HandleMsg( char *buf ,int nSize )  
  2. {  
  3.         m_nRecvByteCount += nSize;  
  4.         if( m_RecvTimer.GetMilliseconds( ) >= 1000 )  
  5.         {  
  6.             // 保存最近十次的網(wǎng)絡(luò)包流量大小  
  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.                         // 查看是否是完整的網(wǎng)絡(luò)包  
  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.     }      

小結(jié):iPhone客戶端服務(wù)器間粘包問題解決代碼實(shí)現(xiàn)案例的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來源: starming社區(qū)
相關(guān)推薦

2010-05-20 10:31:37

IIS服務(wù)器

2021-01-13 10:18:29

SocketNetty粘包

2018-12-18 10:47:37

2018-07-17 09:59:10

PythonUDP服務(wù)器

2009-09-17 16:38:02

WSUS服務(wù)器

2019-08-28 15:19:15

PythonTCP服務(wù)器

2009-10-28 11:27:49

linux服務(wù)器安全

2010-05-17 15:27:34

IIS服務(wù)器

2014-01-17 15:23:55

Nagios

2010-05-20 13:48:17

IIS服務(wù)器

2010-12-31 16:31:08

服務(wù)器常見問題

2024-02-22 13:47:40

2011-06-09 10:51:26

Qt 服務(wù)器 客戶端

2011-08-18 16:03:34

iPhone上傳圖片

2009-08-18 12:51:19

服務(wù)器+客戶端

2010-05-20 11:06:01

IIS服務(wù)器

2009-12-25 10:47:17

DNS服務(wù)器

2009-09-16 16:09:41

NIS服務(wù)器客戶端NIS

2018-12-19 10:31:32

客戶端IP服務(wù)器

2009-06-10 16:25:02

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)