求教异步SOCKET的粘包和缓冲丢包的问题。
我的程序是异步SOCKET。在做一个文件传输的过程。
服务器和客户端 缓冲大小都是 buffSize =1024 ,
先说明,在发送短句或者 断点调试的时候,发送接受都很正常。如:
sendMsg(strBuffer1)
(断点)
sendMsg(strBuffer2)
(断点)
sendMsg(strBuffer3)
(断点)
此时双方通信正常。
但是出现快速运行
sendMsg(strBuffer1)
sendMsg(strBuffer2)
sendMsg(strBuffer3)
接收方就出现 “粘包” 的情况了,“粘包” 如果是小包,我已经通过消息头和尾标记 可以分拆了。
但是问题在于strBuffer1+strBuffer2+strBuffer3 >1024 ,超出了缓冲区,导致接收方丢了包(数据是丢了还是仍在某个地方?) ,。增大buffSize可以解决我的问题,但是我有些钻牛角尖,想找一个更完美的解决方案,人生在于折腾,我也不是伸手党,单遍寻互联网都找不到合适的答案实在是没办法求教到这里了。
也许就只是临门一脚,一个思路问题,求大神不吝赐教。