能不能在线程中使用其他线程创建的socket? 可以,在创建线程的时候把过去的socket的地址传入就可以 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以,传socket的句柄,而不是地址。 一般不能跨线程使用SOCKET,会产生未可预料的后果。具体原因你可以去查查MSDN。 可以,但应该传socket的句柄,而不是地址。 可以,使用SOCKET 别使用CSocket CSocket是绝对肯定不能跨线程使用的。这个绝对是对的。 当然可以,你只要有这个SOCKET的句柄就行。通常的通讯程序(使用Socket而不是MFC)都是这样写:在主线程中发送,在工作线程中接收。这就需要在不同的线程中使用同一SOCKET。不但可以在不同线程中使用,还能在不同进程中使用。因为SOCKET句柄是系统唯一的。 CAsyncSocket也可以跨线程,我就做过。使用Detach和Attach,不过要加一小段补丁代码。使用起来还是挺方便的。 ⌒ ⌒ ⊙ ⊙ 鱼儿鱼儿水中游,鱼儿游啊游,游得乐悠悠。 ∪ 鱼儿鱼儿慢慢游,鱼儿乐悠悠,从不觉不自由。 ≈ 同意west_wood(拧发条鸟)的观点如果你使用的是CSocket,需要在主线程中Detach(),获得SOCKET句柄,然后将SOCKET 句柄传递到另一个线程X。如果X线程是工作者线程(worker-thread),则直接使用该句柄一般会产生一些问题:CSocket是异步SOCKET,这些属性直接绑定在SOCKET句柄上,而不是CSocket类中;因此,直接使用该句柄执行Read操作将回失败,系统报告“在非阻塞套接口上执行阻塞操作”之类的错误。如果X线程是界面线程,则可以将该句柄Attach到一个CSocket对象。这是需要注意这个CSocket对象的存活期。另外,在线程间传递的SOCKET句柄只能关闭一次。 [散分]山寨文化的博弈论解读 怎么让生成的EXE文件双击不执行 透明填充多边形 为什么一定要包含“stdafx.h” 跪求局域网多线程传输大文件源代码VC的 郁闷:如何判断我的ActiveX控件是否已注册?我用CreateControl但。。。 怎样知道某中断号是否已被占用 16位位图文件,某点数据值是怎样和颜色对应的? 急用,请问有什么软件用来字符统计的(不要WORD,Excel),急呀!!!!!!!!! 简单的问题,为什么菜单不能禁止使用 如何得到一副位图的句柄???很急 图像消除噪音
一般不能跨线程使用SOCKET,会产生未可预料的后果。
具体原因你可以去查查MSDN。
CSocket是绝对肯定不能跨线程使用的。
这个绝对是对的。
通常的通讯程序(使用Socket而不是MFC)都是这样写:在主线程中发送,在工作线程中接收。
这就需要在不同的线程中使用同一SOCKET。
不但可以在不同线程中使用,还能在不同进程中使用。因为SOCKET句柄是系统唯一的。
⊙ ⊙ 鱼儿鱼儿水中游,鱼儿游啊游,游得乐悠悠。
∪ 鱼儿鱼儿慢慢游,鱼儿乐悠悠,从不觉不自由。
≈
如果X线程是工作者线程(worker-thread),则直接使用该句柄一般会产生一些问题:CSocket是异步SOCKET,这些属性直接绑定在SOCKET句柄上,而不是CSocket类中;因此,直接使用该句柄执行Read操作将回失败,系统报告“在非阻塞套接口上执行阻塞操作”之类的错误。如果X线程是界面线程,则可以将该句柄Attach到一个CSocket对象。这是需要注意这个CSocket对象的存活期。另外,在线程间传递的SOCKET句柄只能关闭一次。