完成端口接受数据丢失
最近我用iocp写了一个客户端,发现有接收数据的时候有数据丢失,我在GetQueuedCompletionStatus 获取完成结果时候,
吧获取的数据用2进制写入文本,然后服务器发送数据时候也写入文本同样采用2进制方式写入,得到两个2进制文件,通过对比文件工具比较,反省客户端的2进制和服务端的2进制数据有丢失,不知道什么原因,
在次提交几个问题
1,此时如果一个客户端不断发送数据,究竟是一个线程在从完成端口读呢,还是几个线程都在读?对于单cpu的和多cpu的情况是否有所不同?
2,如果,此时是几个客户端同时发送数据,会不会出现“线程A读到client1的2k数据,然后读client2的,线程B读到client1的后2k数据,然后读client2的”这种情况。
备注:
单数据量比较小的情况下,没有发送数据丢失,如果服务端发送的数据量比较大的时候,有数据丢失的情况
如果解决iocp里面数据丢失的问题,大火有没有碰到类似的问题,你们是怎么解决的