Winsock2 - problemów cd.

0

Witam,
mam następujący problem. Piszę grę sieciową, póki co mam sam szkielet. Klient w Visual C++, serwer w czystym C.
Serwer po podłączeniu się dwóch klientów, wchodzi w pętle i odbiera informacje. Zależy mi, żeby odbierał te informacje naprzemiennie. Stworzyłem pętle, raz odbiera od jednego, raz od drugiego, tylko z małym problem. Wysyłając z klienta którego jest kolej kominunikat, serwer go odbiera i wyświetla ale po kliknięciu drugi raz, kiedy już jest kolej innego klienta, serwer nic nie wyświetla, lecz kiedy wyśle komunikat z klienta, którego jest kolej, serwer wyświetla poprzednią wiadomość od klienta 1(tę, która nie powinna być odebrana), a następnie wyświetla, tę która wyświetlana być powinna.

Poniżej fragment kodu:

...
oczekiwanie na klienta
...
akceptowanie klienta
...
połaczenie z klientem, nastepnie oczekiwanie na drugiego
...
jeżeli jest dówch klientów to kolej == 2;
...
i zaczynamy odbierać informacje:

if(kolej == 2){
                     
	for (;;){
		printf("Oczekuje na klienta o id: %d ...\n", kolej);   
                ret[kolej]=recv(client[kolej], inputBuffer[kolej], 512, 0);
                     
                if (ret[kolej]==0)
                        printf("Jakis tam blad!");
                        
                else{
                     
		     printf("[ID: %d] ", kolej);} 
				     
                     cout <<  inputBuffer[kolej] << endl;
                     memset(inputBuffer[kolej], 0, 512);
                     
		     if(kolej==2)
			                     
                     	kolej--;
                       
                     else
                        kolej++;
                              
                      }
               	}
}

Pomoże ktoś? Bo od 2 tygodni stoje w miejscu z projektem...

0

Obsługuj każdego każdego klienta w osobnym wątku, unikniesz wszystkich tych problemów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1