Pakiety TCP w SFML 2.0

0

W poprzednim semestrze z kolegą mieliśmy do napisania jakąś grę obiektowo. Teraz w wakacje postanowiliśmy dodać możliwość gry multiplayer. Pojawił nam się problem, że osoba hostująca widzi ruchy przeciwnika z opóźnieniem od sekundy do 5 sekund, a klient ruchy serwera widzi na bieżąco. To samo się dzieje lokalnie, gdy odpalone są 2 gry na jednym komputerze. Zamieszczę tutaj sposób przesyłania tych danych poprzez SFML, bo całość jest nieźle namieszana i spora.

 packetSend.clear();

			int dane, popDane, popPozX, popPozY, pozzX, pozzY;
			dane=wskGracz1->ZwrocStany();
			popPozX=0;
			popPozY=0;
			popDane=0;

			if (popPozX!=wskGracz1->ZwrocPozycjeX() || popPozY!= wskGracz1->ZwrocPozycjeY() || popDane!=dane){
				packetSend << dane <<wskGracz1->ZwrocPozycjeX() << wskGracz1->ZwrocPozycjeY();
				popDane=dane;
				popPozX=wskGracz1->ZwrocPozycjeX();
				popPozY=wskGracz1->ZwrocPozycjeY();
				socket.send(packetSend);
			}
			packetReceive.clear();
			socket.receive(packetReceive);
			if(packetReceive >> dane >> pozzX >> pozzY ){
				std::cout << "Otrzymalem kod: " << dane << "\n";
				wskGracz2->PobierzStany(dane);
				wskGracz2->NadpiszPozycje(pozzX,pozzY);
			}

Czy jest ktoś w stanie wywnioskować z tego, bądź po prostu powiedzieć jakąś oczywistą rzecz, która sprawia taki delay? Sposób przesyłu i odbioru jest taki sam dla hosta jak i clienta.

Z góry dziękuję.

0

Może to jest odpowiedź?

All functions of socket classes are blocking by default. This means that your program (or at least the thread that contains the function call) will be stuck until the operation is complete. This is important because some functions may take very long: for example, connecting to an unreachable host will wait for a few seconds, receiving will wait until there's data available, etc.
You can change this behaviour and make all functions non-blocking with the setBlocking function of the socket. See the next chapters for more details.

http://www.sfml-dev.org/tutorials/2.0/network-socket.php

dodanie znacznika <quote> dla cytatu - fp

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