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...