当前位置: 代码迷 >> C# >> SocketAsyncEventArgs 粘包處理求教,该如何处理
  详细解决方案

SocketAsyncEventArgs 粘包處理求教,该如何处理

热度:509   发布时间:2016-05-05 05:02:44.0
SocketAsyncEventArgs 粘包處理求教
   本人用SocketAsyncEventArgs做服務異步處理,現發現多個客戶端過來的數據會錯亂,如
A-> "1122334455"
B-> AABBCCDDEE"
結果可能會收到1122AA334455,目前的解決方案是根據IP地址暫存、收完後複合,但這樣遇到一個很現實的問題,若2個客戶端用一個手機WIFI熱點,會造成只有一個Client可以連接進服務器處理,請高手指教,我的思路那兒有問題?
  謝謝,急啊~
------解决思路----------------------
如果你不能区分出Socket对象是和哪个用户交互,那么就只在包头上标注用户特征和包号,socket还会有后发的包先收到情况,所以包号是用来理请顺序的重要保证
------解决思路----------------------
还有就是,如果出现的不是很频繁的话,完全可以用加校验的方式杜绝
比如包头先写上整个包的长度,如果长度不符就认为是错误数据直接抛弃
这样可能会导致某次请求无响应,但是不会导致服务端数据出错