【发布时间】:2016-12-07 17:14:28
【问题描述】:
我正在尝试为多个套接字客户端构建模拟。 我的服务器有以下代码来监听多个客户端
我的套接字来自 CAsyncSocket 的一个非常简单的类驱动器,我的环境是 windows MFC。
m_server.Create(....); // with the correct values
if (m_server.Listen()==FALSE)
及以后的 OnSocketAccept() 函数
if (m_server.Accept(tempSock))
{
CSocketThread* pThread = (CSocketThread*)AfxBeginThread(RUNTIME_CLASS(CSocketThread), THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);
...
我的模拟应用程序有以下代码:
for (int i = 0; i < numOfClients; i++)
{
m_sConnected[i].Create();
int rVal = m_sConnected[i].Connect(csIPAddress.GetString(), m_port);
这行不通。
在 WireShark 中,我可以看到我的(例如 numOfClients = 10)10 个客户端连接到不同的客户端源端口。
但是 m_sConnected[i] 的每个新套接字在第二次连接到包括 m_sConnected[0] 在内的所有套接字后都变为 NULL。
关闭套接字或销毁模拟应用程序在服务器端为侦听套接字的所有打开线程创建套接字关闭。
有什么问题? 我可以为所有套接字客户端使用相同的进程/线程吗?
10 倍
UrAv.
【问题讨论】: