Chodzi mi o konkretną sytuację:
Mój serwer nasłuchuje na porcie X. Klient łączy się z moim serwerem i serwer oczekuje na pakiet:
struct package
{
unsigned char type;
char *data;
};
Klient wysyła ten pakiet typu 120, serwer odbiera i odczytuje typ pakietu-typ 120 czyli rozmiar np. 32bajty. Następnie odbiera resztę pakietu i porównuje odebrane wartości z czymś tam i jeżeli się zgadzają, dodaje klienta do jakiejś listy.
W pewnym momencie ktoś spamuje na adres i port X serwera (wysyła właśnie jakieś losowe pakiety). Nadchodzi ten moment, odbieram błędny pakiet od złego klienta - tutaj zaczynają się problemy. Powiedzmy że serwer odczytał z tego błędnego pakietu typ wynoszący 204. Serwer wie że pakiet typu 204 powinien mieć rozmiar 128bajtów i dąży do odebrania takiego pakietu. Jednak otrzymuje tylko jakieś śmiecie. Interesuje mnie jak rozwiązać ten problem. Będzie to proste w momencie, gdy serwer odczyta typ pakietu z poza obsługiwanego zakresu, ale co w momencie, gdy typ znajduje się w znanym zakresie?