对于同一个socket,WSASend和WSARecv都是填写Overlapped,
而我在GetQueuedCompletionStatus之后无法确定是WSASend还是WSARecv完成了,
通过什么方式我能分辨出是刚才的WSASend完成还是WSARecv完成呢?
而我在GetQueuedCompletionStatus之后无法确定是WSASend还是WSARecv完成了,
通过什么方式我能分辨出是刚才的WSASend完成还是WSARecv完成呢?
解决方案 »
- CScrollView的滚动问题
- 关于atl的问题。
- 如何亮色显示树控件中一个特定的Item
- 高分求图像压缩代码,分不够 还可以给,全身分都相送
- 小弟想写一个win98下的sniffer,请帮忙!
- 有谁知道QQ等聊天软件中,表情框是怎么实现的吗?
- 关于程序启动,求救,在线等待...
- VC6 DirectX9bSDK 多程序使用一个摄像头,也可以称为共享摄像头
- isapi 分析映射问题,搞了三天没搞定。恳请大侠援助
- About Unhandled exception? anyone can help me, interpret to me?
- 用CreateIndirect 创建Dialog时,DLGTEMPLATE 怎么填?
- 初学者问题:用win32 sdk怎么添加一个工具栏?
1.我先WSARecv在等待数据的到来
2.正在等待的时候因为一些原因我WSASend给这个sock一些数据,
3.此时我调用GetQueuedCompletionStatus得到的完成端口是我以前WSARecv等待的呢,还是我刚WSASend的完成呢?
如果一个socket已经WSARecv正在等待GetQueuedCompletionStatus时,
如果此时其他线程往此socket WSASend
对于完成端口来说,就同时有两个事件在等待.
如果此时正好也recv来了数据,
两个线程可能会同时运行,
怎么区别哪个是Send,哪个是Recv呢?如果是收完了再发,肯定不会出这种情况,因为那样有种单工的感觉.如果用send,也就是不用overlap,如果是非lock模式,
怎么知道发送是否成共了呢?如果send 是lock模式,recv是非lock模式,
不太可能吧.
怎么知道发送是否成共了呢?如果send 是lock模式,recv是非lock模式,
不太可能吧.我做的冬冬完成端口主要是为了应用WSARecv。
直接send(socket...),阻塞,怎么会是不可能!