socket编程,连续调用send问题?
昨天在写游戏程序的通信部分的时候,其中有一个位置出现了连续调用send函数来发送数据的情况…
send(...);//发送的是自定义的通信类型1的数据帧
send(...);//发送的是自定义的通信类型2的数据帧
在接收的时候,出现了错误!
后来经过了仔细的调试发现接收端只触发了一次接收的消息处理过程(用的是异步通信方式),而接收的数据长度是发送的
两个send函数总数据长度,内容也是两个的合并!!
我在两次放松中间加入
send(...);//发送的是自定义的通信类型1的数据帧
Sleep(5000);// 这样就能分开正确接收
send(...);//发送的是自定义的通信类型2的数据帧
我在网上查了一个下午,也没有找到合理的解决办法。开始以为是接收缓冲区接收覆盖,后来接收处加了一个变量锁来控制接收缓冲区,但是并没有解决,后来才发行时发送端的问题,出现了数据合并现象。
无奈之下请各位高手帮忙,
为什么出现数据的合并发送?
有没有办法分开发送?
有什么函数可以检查socket底层缓冲区的使用情况?(我想通过探测缓冲区情况来解决,只有当缓冲区没有使用的时候才启动下一次发送过程)
谢谢!