重叠IO中的完成例程模型,在完成例程中怎么区分是哪个SOCKET完成了操作? 我的 WSAOVERLAPPED 变量的Internal总是0
解决方案 »
- 急!!!!!!!!在MFC中怎样用PictureBox加载图片啊?
- VC.NET论坛人气太差了,转来问问:VC.NET中如何载入和调用DLL呀?
- 处理程序很占用资源,该怎么办?
- 关于DOMWriter
- 用MFC写了一个OCX,该OCX有个方法有个输出参数:BSTR*,请问在网页中用VBScript或JavaScript如何调用呢?3X
- 请教各位:怎样用钩子获得选中文件的名称路径
- datagrid 如何获取选择行的数据??
- 我想在IE中嵌入ACTIVE的控件,这个控件是一些图形象丙图,条形图,波形图...怎么做
- 发个mfc42ud.lib,在线,马上给分![email protected]
- 本人用PB(后台数据库为ASA)开发的软件,用在三.四台机子上,你说这三四台机子该怎么建立局域网?
- 急!!数据库 多表问题!!!
- 关于web browser的 问题!!!!熟悉的帮下哦。。。
有例程用这样的代码判断是哪个SOCKET.
for(int i=0;i<nSockTotal;i++)
{
if(AcceptOverlapped[i].Internal == Overlapped->Internal)
return i;
}
但,我实际运行的情况是, Internal 值总是0, 无法区分是哪个SOCKET完成了操作.
在完成例程中应该怎么区分是哪个SOCKET完成了操作呢? Internal 可以手动指定一个值吗?
应该可以像完成端口一样,在Overlapped结构后面加上一个单I/O操作数据来识别吧
从overlap结构继承一个你自己的结构,myoverlap
在myoverlap机构中添加一个SOCKET成员 _mysocket
每次投递请求之前,把_mysocket设置成你的socket,把这个myoverlap传递给你的WSASend函数
在接受到的时候,把overlap结构强制转换成你的myoverlap,里面的_mysocket就是你的原始socket了