Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CAsyncSocket和线程池问题_C++_Sockets_Mfc_Multithreading_Threadpool - Fatal编程技术网

C++ CAsyncSocket和线程池问题

C++ CAsyncSocket和线程池问题,c++,sockets,mfc,multithreading,threadpool,C++,Sockets,Mfc,Multithreading,Threadpool,我有一个具有以下结构的服务器应用程序: 有一个对象称为服务器,它在无休止的循环中侦听和接受连接。 我有一个来自CAsyncSocket的后代类,它重写了接收事件OnReceive,称之为ProxySocket。 我还有一个线程池,其中包含早期创建的线程 当服务器对象接收到连接时,他接受新对象ProxySocket上的新连接。 当数据到达ProxySocket时,他创建一个命令对象并将其提供给线程池。在这个命令对象中,我给出了ProxySocket的套接字句柄。当命令的新对象正在创建时,我将在工作

我有一个具有以下结构的服务器应用程序: 有一个对象称为服务器,它在无休止的循环中侦听和接受连接。 我有一个来自CAsyncSocket的后代类,它重写了接收事件OnReceive,称之为ProxySocket。 我还有一个线程池,其中包含早期创建的线程

当服务器对象接收到连接时,他接受新对象ProxySocket上的新连接。 当数据到达ProxySocket时,他创建一个命令对象并将其提供给线程池。在这个命令对象中,我给出了ProxySocket的套接字句柄。当命令的新对象正在创建时,我将在工作线程中创建一个新套接字并将句柄附加到它。
我的下一个问题是:
当命令结束时,套接字并没有关闭,我只是拆下句柄并按计划将CSocketHandle设置为无效的\uSocket值。但是,我的第一个ProxySocket对象不会在之后接收新数据的消息。如何解决这个问题?

我认为不能在线程池secenario中使用CAsyncSocket对象(或其子对象)。CAsyncSockets是在WSASsyncSelect之上实现的,它告诉winsock向窗口句柄发送通知。 由于windows具有线程关联性,因此无法将CAsyncSocket处理“移动”到其他线程