Я пытаюсь создать симуляцию для нескольких сокетов. Мой сервер имеет следующий код для прослушивания нескольких клиентов.C++ Создание нескольких клиентов сокетов
Мой сокет из очень простого диска класса из 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 [я] становится NULL, после второго подключения ко всем разъемам, включая m_sConnected [0].
Закрытие сокетов или уничтожение приложения для моделирования Создайте сокет рядом со стороной сервера для всех открытых потоков для сокетов прослушивания.
В чем проблема? Могу ли я использовать тот же процесс/поток для всех моих сокетов?
10x
UrAv.
Daniel Привет, спасибо вам ответ. Я не поместил весь свой код (моя ошибка). На стороне сервера я делаю отсоединение и возобновление. Моя проблема заключается в стороне клиента - серверная сторона открывает несколько сокетов и получает индикацию для каждого гнезда нитей сервера, включая указание закрытия сокета. – UrAv
Вы путешествуете по порту? beacose, похоже, что вы используете один и тот же номер –
, не помните, что не видите, что вы используете функцию create. это будет esier, чтобы понять, где ошибка, если вы вставьте больше своего кода. –