程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> TCP粘包處理 參考spserver,tcpspserver

TCP粘包處理 參考spserver,tcpspserver

編輯:C++入門知識

TCP粘包處理 參考spserver,tcpspserver


TCP粘包出現的原因就不在詳細描述了。TCP粘包是在做TCP編程時經常會遇到的問題,網上相關的參考也不少,大都都是一個熱心人士編寫的, 若僅用於學習就算了,若用真正用於項目還有待考慮。 本文就簡述一下如何利用spserver處理粘包問題。SPserver的性能有多好我也不說了。(嘎嘎) 處理思路如下: 1.SP_MultiLineMsgDecoder中的decoder是用於分解包,當然分解的原來是使用‘\n’.我們利用該函數的原來分包。 2.SP_CircleQueue * mQueue; 用於存儲分解後的包。 3.SP_Buffer 用於存儲收到的報文。 4.那如何讀取包呢? spwin32buffer_read( getEvBuffer( session->getInBuffer() ), mFd, -1 ); 在該函數內部,使它使用了itcl判斷報文的數量,然後在SP_Buffer分配對應的空間, 分配函數為if (spwin32buffer_expand(buf, howmuch) == -1) 5.需要注意的是解包時,需要將完整的包讀至SP_CircleQueue中,調用函數為spwin32buffer_remove。 寫完速度測試完全對應 echoServer沒有問題。  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved