Napisałem serwer, który wykonuje nieblokującą IO przy użyciu interfejsu Java NIO API. Widzę sytuację, w której aplikacja kliencka jest niespodziewanie zamykana (na przykład z powodu utraty zasilania), a połączenie pozostaje otwarte po stronie serwera.NIO - Wykrywanie zamkniętego połączenia
Kolega napotkał ten sam problem i powiedział, że używa linii papilarnych do wykrycia tego typu rzeczy, ale mam nadzieję, że jest łatwiejszy sposób. Czy ktoś inny napotkał ten problem?
Kilka dodatkowych informacji: Mój obecny projekt serwera anuluje klucz i zamknie odpowiedni kanał, jeśli zostanie przechwycony IOException
podczas próby odczytu/zapisu. Takie podejście wydaje się działać w 99% przypadków; Widziałem tylko kilka sytuacji, w których połączenie wydaje się być otwarte.
Dzięki ZZ Coder - Tak właśnie myślałem (obawiałem się). Jestem zaskoczony, że to nie jest funkcja TCP. – Adamski
"Ping" raczej, te aplikacje nie są ludźmi - wiesz. –