如何在多线程之间传递socket
2007-05-24 16:52
141 查看
有些特殊情况下,可能需要在不同线程之间传递socket。当然我不建议在使用CAsyncSOcket的时候这么做,因为这增加了出错的风险(尤其当出现拆解包问题时,有人称为粘包,我基本不认同这种称呼)。如果一定要这么做,方法应该是:
当前拥有这个socket的线程调用Detach方法,这样socket句柄和C++对象及当前线程脱离关系
当前线程把这个对象传递给另外一个线程
另外一个线程创建新的CAsyncSocket对象,并调用Attach
上面的例子,我稍微做修改,就不会出错了:
当前拥有这个socket的线程调用Detach方法,这样socket句柄和C++对象及当前线程脱离关系
当前线程把这个对象传递给另外一个线程
另外一个线程创建新的CAsyncSocket对象,并调用Attach
上面的例子,我稍微做修改,就不会出错了:
CAsyncSocket Socket; UINT Thread(LPVOID sock) { Socket.Attach((SOCKET)sock); Socket.Close (); return 0; } void CTestSDlg::OnOK() { // TODO: Add extra validation here Socket.Create(0); SOCKET hSocket = Socket.Detach (); AfxBeginThread(Thread,(LPVOID)hSocket,0,0,0,0); }
相关文章推荐
- 如何在两个Activity之间传递数据?
- 转载如何实现portlet之间的传递参数
- 在两个Activity之间如何传递一张图片
- 如何在小程序页面之间,传递数据和变量?
- jstring字符如何转换成java字符(仅限于java与JNI之间的传递)
- android之在activity中控制另一个activity的UI更新_如何在activity之间传递handler
- 基于GUI编程时,如何在客户端与服务器之间传递对象
- 多线程的问题:如何保证界面的分页参数安全的传递到dao层?
- 页面之间如何传递大量参数
- 【新手入门】Oozie workflow如何在action之间传递参数
- 浅谈C# Socket编程及C#如何使用多线程
- 如何在JavaScript与ActiveX之间传递数据(二)
- 多线程:如何在调用线程时传递参数
- Android应用开发(三):如何完成Activity之间的传递参数
- 页面之间如何传递特殊字符
- 如何在两个ViewController之间传递数据
- 如何在C#用WM_COPYDATA消息来实现两个进程之间传递数据
- 在Activity之间如何传递数据,请尽可能说出你所知道的传递数据的方法,并详细描述其实现过程。
- 用ServerSocket 实现服务端与客户端之间信息传递
- 如何解决Servlet与jsp之间传递汉字出现乱码