关于多线程使用同一SOCKET句柄调用WSASend各发送2个BUFFER时, 接收端乱包问题
前提: 客户端N线程T1.T2....TN同时利用WSASend各发送2块数据(消息头+真实数据), 服务端IOCP接收数据(服务端每处理完一个接收后, 才调用WSARecv发起接收请求).
问题: 服务器有乱包现象, 使用抓包工具也发现服务器收到的也不是预想中的(消息头+数据...消息头+数据....), 而是有交叉现象, 就是某个PKT的数据里包含了其他消息头, 从而导致整个服务器的接收工作乱套!
提问: 1. 是不是必须在WSASend前后必须加锁?
2. WSASend函数底层对于处理同时发多BUFFER是如何处理的?