关于CSocket的AsyncSelect函数用法求教

Lancelot 1999-12-29 08:10:00
加精
各位大虾:
我在一对话框中复制一个工作进程作为TCP/IP Server,并建立一个sSocket监听,在sSocket Accept到Client请求后,产生新的dSock,而后,再创建工作线程用于处理dSock与Client的连接,sSock继续用于监听Accept。
我现在要在工作线程中对dSock调用AsyncSelect函数(以经重载OnSend及OnReceive等函数),为何会出错(DEBUG认为该CSocket无窗口句柄(为NULL),是否在CSocket中存在窗口句柄用于Message事件)?
哪位大虾熟悉AsyncSelect函数的使用?能否在工作线程中使用????

...全文
1695 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lancelot 1999-12-30
  • 打赏
  • 举报
回复
hephaestus,Pizza:
好,谢谢你们的答复,我是VCPP的初学者,以后请多指教。
因为我是要做一个SOCKET SERVER,这个进程可能会收到大量请求,为了保证应用的
性能及并发处理能力,最好主进程只处理连接请求,而数据交换由子线程完成(即长连接方式),因此会牵涉到在子线程中使用异步非阻塞方式,如有实现方法,请详细回复,谢了!(我在主进程中使用过AsyncSelect,没有问题。)

HAPPY NEW YEAR!

另:
我如果想在论坛中直接回复问题的答复者,如何做?


Lancelot
Pizza 1999-12-30
  • 打赏
  • 举报
回复
在多线程中使用Socket和在但线程中不太一样。在MSDN中用multisoc查找,
那篇文章说的很详细。
hephaestus 1999-12-29
  • 打赏
  • 举报
回复
我这几天都在玩socket编程,很有意思啊!
asyncSelect的作用是让socket成为异步的(非阻塞),
当指定的socket事件到达时(FD_CLOSE,FD_READ,FD_WRITE...)
对指定的window发出一个自定义的消息(WM_USER+1xx)
其中消息参数指定了事件类型便于处理。
所以如果用异步方式就不用多线程啦!
如果用多线程就用阻塞方式,因为在阻塞方式下读写是你自己控制的。

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧