Хорошо, что я делаю, как следует, я начинаю конструктор, где сокет делается для сервера, чтобы слушать. (привязка, прослушивание и т. Д.) Затем я создам Thread для запуска функции, которая ищет входящие звонки от клиентов, которые он должен принять. AFTER acception Соединитель, который подключен, должен быть помещен в список. После этого создается новая нить.C++ Тема/векторный чат
Но он держится за прием клиентов, и я действительно просмотрел его. Надеюсь, что это не так много, чтобы спросить.
First-chance exception at 0x010820b1 in ChatServer.exe: 0xC0000005: Access violation reading location 0x00000000. Unhandled exception at 0x010820b1 in ChatServer.exe: 0xC0000005: Access violation reading location 0x00000000.
Это немного much-> ServerCode:
int main(int argc, char* argv[])
{
//Constructor that takes care of making connection
//Throw in a new Thread
CreateThread(0,0,&ServerListenThread,0,0,0);
//while loop to get input and pass it to the SendMessages function
//function being called within a Thread
DWORD WINAPI ServerListenThread(LPVOID pParam)
{
while(1)
CServerObj->StartListenClient();
return 0;
}
void CServer::StartListenClient()
{
sockaddr_in i_addr;
int i_addrlen = sizeof(i_addr);
SocketC = accept(SocketS,(struct sockaddr*)&i_addr,&i_addrlen); <<<Here it gives the Access Violation< at the accept
{
cout << "A Connection was found with :" <<endl;
}
SocketS = SocketC;
if(SocketS != INVALID_SOCKET)
{
vClientList.push_back(SocketS);
CreateThread(0,0,&ServerRecThread, (void*)SocketS, 0,0);
}
}
Вы можете проверить стек вызовов в режиме отладки и опубликовать его здесь? Вы только разместили информацию о том, что _Inside не удалось, но какая часть вашего кода, называемая этим _Inside, более интересна. – Zuljin
Вторым фактором может быть завершающее условие цикла for в CServer :: SendMessages, используйте itl! = VClientVector.end(), чем меньше оператор создает здесь непредсказуемые результаты. – Jack