Я не могу использовать вектор в CAsyncSocket :: OnClose ()

Я работаю над клиентским / серверным вещательным приложением, используя CSocket. Пока клиент подключается к серверу, вызов метода OnAccept. В методе OnAccept я создаю объект этого класса и сохраняю этот указатель объекта в векторе.

void ServerSocket::OnAccept(int nErrorCode)
{
ServerSocket * User = new ServerSocket;
temp->m_hSocket = INVALID_SOCKET;
Accept(*temp);
m_vConnectionObject.push_back(temp);
CSocket::OnAccept(nErrorCode);
}

Когда клиент закрывает соединение, мой метод OnClose будет вызываться, но когда я пытаюсь получить доступ к своему вектору в этом методе, он показывает, что мой вектор пуст.

void ServerSocket::OnClose(int nErrorCode)
{
CString cname,name;
UINT cport,port;

GetPeerNameEx(cname,cport);

int i=m_vConnectionObject.size();      //here i got "i= 0"
std::vector<ServerSocket *>::iterator it = (m_vConnectionObject).begin() ;
for ( ; it != m_vConnectionObject.end(); ++it)
{
(*it)->GetPeerNameEx(name,port);
if ((name==cname) && (port==cport))
{
//erase code
}
}

CSocket::OnClose(nErrorCode);

}

Я хочу получить доступ к этому вектору, чтобы удалить указатель отключенного клиента.

0

Решение

Вы выполняете OnAccept в контексте сокета прослушивания сервера, но вы выполняете OnClose в контексте клиентского сокета. Итак, вы смотрите на два разных вектора.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector