唉,用了这么久MFC的Socket类,到现在还不明白在线程间如何传递socket句柄…… msdn Illustrates Using Sockets in Multiple Threads 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用FromHandle,由于MFC的handle table是按线程维护的,跨线程使用恐怕不会成功;用Attach之前必须保证socket句柄已经被Detach了,也就是说,这个socket句柄未跟任何MFC对象关联,即,传递socket句柄之前必须首先调用Detach,而后线程中的Attach才能成功。这都很麻烦,也不方便,但如果要使用CAsyncSocket,别无它法。你如果直接用socket api,可能问题反而会简化。 不对吧,核心对象的 handle table应该是以进程为单位的吧。我认为你的方法是可行的。仔细看看SockCore.cpp Attatch()方法肯定是可以的.我就是这样用的。如:CTSocket:public CAsyncSocket{ ...........}CTSocket * socket;socket->Create(....);AfxBeginThread(SocketThread,socket->Detach());UNIT SocketThread(LPVOID lp){ CTSocket * p; p->Attatch((socket)lp); .....}旧可以了,实验一下把。 屏幕键盘关于更改输入法的问题 求G711协议编解码封装好的C++类库 关于VFW的VCM调用现成编码器的问题!!急急急!!! 还有4分,送给第一个看到这个贴子的人 如何对Word文件实施全文搜索功能?最近有急用,谢谢!!!!! 请问:如何将int型转换为float型? 请教:如何用现有bmp图片新建一个Toolbar资源?立即结帐! 在vc程序中调用dos命令 MFC 如何在指定单元格中插入数据 大一期末作业 求<<C++课程设计基础>>课程设计任务书 !!!!! 请问:一个含有ActiveX控件的vc子程序(函数)能不能作成DLL ?????? 请问怎么捕捉属性页的切换事件?
用Attach之前必须保证socket句柄已经被Detach了,也就是说,这个socket句柄未跟任何MFC对象关联,即,传递socket句柄之前必须首先调用Detach,而后线程中的Attach才能成功。
这都很麻烦,也不方便,但如果要使用CAsyncSocket,别无它法。
你如果直接用socket api,可能问题反而会简化。
我认为你的方法是可行的。仔细看看SockCore.cpp
CTSocket:public CAsyncSocket
{
...........
}CTSocket * socket;
socket->Create(....);
AfxBeginThread(SocketThread,socket->Detach());UNIT SocketThread(LPVOID lp)
{
CTSocket * p;
p->Attatch((socket)lp);
.....
}
旧可以了,实验一下把。