gpt4 book ai didi

c++ - CAsyncSocket 和 ThreadPool 问题

转载 作者:行者123 更新时间:2023-11-28 08:29:50 25 4
gpt4 key购买 nike

我有一个具有这种结构的服务器应用程序:有一个对象,称他为服务器,它在无休止的循环中监听和接受连接。我有来自 CAsyncSocket 的后代类,它覆盖了事件 OnReceive,称他为 ProxySocket。我还有一个包含早期创建线程的线程池。

当服务器对象接收到连接时,他接受新对象 ProxySocket 上的新连接。当数据到达 ProxySocket 时,他创建一个命令对象并将其交给线程池。在这个命令对象中,我给出了 ProxySocket 的套接字句柄。当创建新的命令对象时 - 我在工作线程中创建一个新的 Socket 并将句柄附加到它。
接下来是我的问题:当命令结束时,套接字不会关闭,我只是分离句柄并将 CSocket 句柄设置为 INVALID_SOCKET 值,如计划的那样。但是我的第一个 ProxySocket 对象在那之后没有收到新数据接收的消息。我该如何解决这个问题?

最佳答案

我认为您不能在线程池场景中使用 CAsyncSocket 对象(或其后代)。 CAsyncSockets 是在 WSASsyncSelect 之上实现的——它告诉 winsock 将通知发送到窗口句柄。因为 Windows 具有线程关联性,所以永远不能将 CAsyncSocket 处理“移动”到不同的线程。

关于c++ - CAsyncSocket 和 ThreadPool 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2661685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com