while(true)
{
Klient temp;
SOCKET client = accept(sock,(struct sockaddr *)&ich,&sin_size);
if (client!= INVALID_SOCKET)
{
int ID = wszyscy.size(); //wszyscy is a vector of Klient structure; ID increments like: 0,1,2,3 etc
memset(&temp,0,sizeof(Klient)); //zero structure
temp.Gniazdo = client; //fill temporary structure
temp.Identyfikator = ID;
temp.Nick = "";
temp.Watek = NULL;
wszyscy.push_back(temp);//Adding
std::cout << ID << std::endl; //Showing ID for test
std::cout << inet_ntoa(ich.sin_addr) << std::endl;//IP
wszyscy[ID].Watek = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) Watek,&wszyscy[ID], 0 ,NULL);//Creating thread
}
}
Тема:
DWORD Watek(LPVOID Dane)
{
const char* tekst_serwera = "Halo, tu server :D\n\0";
Klient *temp = (Klient*) Dane;
send(temp->Gniazdo,tekst_serwera,strlen(tekst_serwera),0);
std::cout << "Podlaczyl sie klient o ID: " << temp->Identyfikator << std::endl;
char bufor[500];
while(true)
{
memset(bufor,0,500);
recv(temp->Gniazdo,bufor,500,0);
std::cout << bufor;
}
}
Проблема заключается в том, что когда я запускаю 2 или более клиентов, сервер отправляет им сообщения, которые предполагают приветствие (tekst_servera), но когда я пишу что-то на клиентебыл запущен как второй, а затем я пытаюсь написать что-то на клиенте, который был запущен, поскольку первый сервер получает 80% загрузки ЦП и не получает данные, только первый (это происходит только на клиенте, который был запущен первым)Я сделал temp.watek = CreateThread, а затем сервер push_back все еще не отвечал на сообщения клиента № 1, но не отставал, как ад.
Любая помощь приветствуется