我是 MFCCWinThread
和的新手CAsyncSocket
,并尝试通过基于对话框的应用程序自己学习它们。
这是我想要做 的:制作服务器/多客户端模型:当客户端数量连接到服务器时,服务器将根据客户端数量创建线程并通过套接字连接到线程。我已经参考了这篇文章来传递: https: //support.microsoft.com/en-us/kb/175668。
我已经成功地在每个连接上创建线程,但是......
我的问题是:我可以从主窗口(GUI)重新访问已传递给线程的所有套接字以向所有客户端发送(广播)数据吗?
这就是我传递的方式:
在服务器端:
void CMyServerDlg::OnAccept(){
CConnectSoc temp_soc;
m_Listener.Accept(temp_soc);
CSocketThread *pThr = (CSocketThread*)AfxBeginThread(
RUNTIME_CLASS(CSocketThread),
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED);
pThr->threadHandleSocket = temp_soc.Detach();
pThr->ResumeThread();
}
注意:m_Listener
是派生自CAsyncSocket
和CSocketThread
派生自的类的对象CWinThread
。
在线程标题内,我添加了 2 行:
Public:
CConnectSoc threadSocket;
SOCKET threadHandleSocket;
在线程类 .cpp 中:
BOOL CSocketThread::InitInstance(){
threadSocket.Attach(threadHandleSocket);
return TRUE;
}
有人可以告诉我接下来要做什么将数据发送到这些套接字吗?