我的服务端程序是用完成端口写的,服务端分两次向客户端发送数据,客户端有时却一次收到服务端两次发来的数据. 在服务端两次发送数据之间调用sleep()又能正常. 这是为什么呀? 如果不用sleep()怎样解决啊?
解决方案 »
- 关于搜狗收藏夹Favorite2.dat文件的解析
- socket传输视频数据
- 如何记录当前应用程序实例个数?
- 文档/视图结构,CChildFrame Cview关系
- MFC多行编辑框提行问题
- 请教 COM 已死的问题
- 为什么我在picture控件上画上图之后,再在其上面画一个矩形框,鼠标停止画之后,那个矩形框总在图片的后面,看不见呢?
- 怎么调用outlook并且把收信人地址和附件都设置好呢!(在线等待)
- 是不是我问的问题太简单了,都没人理我,但是我确实不会。
- 如何将窗口变成一个不可点击,却能穿透的窗口?
- 请问DDV_MinMaxUInt是怎么添上去的?
- 如果我的程序对话框弹出对话框,我的程序怎么可以得到最上层的对话框是什么?
1,可能你的数据量太大,不sleep的话,没有足够的发送窗口,所以第二次发送失败,你可以输出调试信息看一下,是不是返回WSA_IO_PENDING,如果不是,那就是错误了
2,可能你投递的两个WSASend都使用了同一个overlap结构,不加sleep的话,前面一个没有进行i/o完成的时候,第二个使用该结构会出错/
不管服务器端分几次发送
客户端收到几次数据跟服务器的发送次数本来就是没什么联系的