2009-08-25 12 views
8

Mam aplikację, która używa HttpListener, muszę wiedzieć, kiedy klient się rozłączył, teraz mam cały mój kod wewnątrz bloku try/catch, który jest dość brzydki i nie jest dobrą praktyką.Wykryj rozłączenie klienta z HttpListener

Jak mogę się dowiedzieć, czy klient został rozłączony?

dziękuję!

Odpowiedz

8

Krótka odpowiedź: nie możesz. Jeśli klient przestanie mówić, podstawowe gniazdo może pozostać otwarte i nigdy się nie zamknie; to tylko czas oczekiwania. Sposobem na wykrycie tego jest próba wykonania akcji na tym połączeniu, a jeśli połączenie nie jest już poprawne, spowoduje to pewnego rodzaju wyjątek w zależności od tego, co się stało. Jeśli używasz HttpListener asynchronicznie, może trochę uprzątnąć twój kod, ale niestety to właśnie utknęło. Nie ma zdarzenia, które uruchomi się, jeśli klient się rozłączy.