Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 2.3 Network] Ignorowanie niewłaściwych pakietów przez receive

Ostatnio zmodyfikowano 2016-10-25 16:03
Autor Wiadomość
ScuroGuardiano
Temat założony przez niniejszego użytkownika
[SFML 2.3 Network] Ignorowanie niewłaściwych pakietów przez receive
» 2016-10-24 10:19:31
Witam.
Koszę sobie sieciowo za pomocą SFML i przy pisaniu serwera pojawił mi się taki problem:
Używam socket selectora do odbierania klientów i pakietów. Do odbierania pakietów używam klasy sf::Packet jednak jak jakiś pakiet nie jest zakodowany przy użyciu tej klasy (np. wpiszę adres wraz z portem w przeglądarce) to cały serwer się zawiesza próbując odebrać pakiet. Jak zrobić ignorowanie pakietów, których nie można odebrać jako sf::Packet? Kod:
C/C++
//kod pętli
if( selektor.isReady( Klienty[ i ] ) )
{
    sf::Packet temp;
    Klienty[ i ]->receive( temp );
}
//kod pętli
P-152852
Gibas11
» 2016-10-24 20:58:08
Jesteś pewny, że zawiesza się przy odbiorze a nie gdy próbujesz z tym pakietem coś zrobić?
P-152883
ScuroGuardiano
Temat założony przez niniejszego użytkownika
» 2016-10-25 00:28:14
No jedynie tutaj by mogło, bo zaraz za linijką receive mam
C/C++
cout << "Odebrano pakiet od klienta " << i << endl;
Ona się już nie wyświetla, a program nie rusza dalej dopóki nie zamknę niekompatybilnego klienta (np. przeglądarkę)
P-152904
1aam2am1
» 2016-10-25 15:19:32
Nie odbieraj za pomocą sf::Packet, gdyż on przesyła wielkość danych paczki i dane w odpowiedniej formie i inny klient będzie nie kompatybilny jeżeli użyjesz innego formatu. Jeżeli chcesz aby się nie zawieszało i odrzucać błędne paczki powinieneś odbierać surowe dane i napisać własny parser który będzie sprawdzał poprawność odebranych danych i najwyżej je odrzuał.
P-152909
ScuroGuardiano
Temat założony przez niniejszego użytkownika
» 2016-10-25 16:03:08
Ehh czyli trochę się nakoduję, dzięki za odpowiedź :D
P-152910
« 1 »
  Strona 1 z 1