Klasa socket - zakończenie połaczenia

0

Witam
Mam napisaną aplikację łączącą się przy pomocy klasy socket z serwerem.
W aplikacji tej co jakiś czas łączę się i po skończeniu wykonywania operacji wylogowuję z serwera.
Mam problem ponieważ nie zawsze operacja socket.close powoduje rzeczywiste zakończenie sesji na serwerze, przez co nie mogę się ponownie zalogować.
W jaki sposób mogę sprawdzić czy moja sesja rzeczywiście została zakończona i nie istnieje już na serwerze ?

Ile czasu może trwać odebranie i wykonanie socket.close przez serwer ? tzn na ile czasu uśpić wątek aby być pewnym że połączenie zostało zakończone ?

0

Twój serwer powinien obsługiwać każde połączenie w oddzielnym wątku, co za tym idzie, jeżeli poprzednie zostało zerwane, ale socket się jeszcze nie zamknął to i tak nowe połączenie zostanie utworzone i obsłużone w oddzielnym wątku i to powinno rozwiązać problem.

0

serwer niestety nie jest mój. łączę się z obcym serwerem.
Jeśli moje zakończenie połączenia nie zostanie u nich wykonane to przy ponownym połączeniu nie dostaję już informacji z ich serwera.
Czy jest sposób aby sprawdzić czy połączenie zostało zakończone po stronie serwera ?

0

Takie zachowanie może wynikać z ich protokołu, tzn. ich serwer oczekuje, że przed zamknięciem socketu wyślesz jakiś pakiet z odpowiednią informacją, robisz to gdy pisałeś o wylogowaniu?

0

Nie wymagają przesyłania żadnego polecenia przy kończeniu połączenia.
Czasami jest tak że logowanie i wylogowywanie uda się 150 razy a za 151 już nie.

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