Giả sử bạn có một số mức kiểm soát đối với giao thức, tôi là một fan hâm mộ lớn của việc gửi nhịp tim để xác minh rằng kết nối đang hoạt động. Nó được chứng minh là phương pháp chứng minh thất bại nhất và thường sẽ cung cấp cho bạn thông báo nhanh nhất khi kết nối bị hỏng.
TCP keepalives sẽ hoạt động, nhưng nếu máy chủ từ xa đột nhiên tắt nguồn thì sao? TCP có thể mất nhiều thời gian để hết thời gian chờ. Mặt khác, nếu bạn có logic trong ứng dụng của bạn mà mong đợi một nhịp tim trả lời mỗi x giây, lần đầu tiên bạn không nhận được chúng, bạn biết kết nối không còn hoạt động, hoặc bởi một mạng hoặc một vấn đề máy chủ ở phía xa .
Xem Do I need to heartbeat to keep a TCP connection open? để thảo luận thêm.
Nguồn
2010-01-12 14:40:41
http://stackoverflow.com/questions/969866/java-detect-lost-connection – Aziz
Và một http://stackoverflow.com/questions/485855/how-do-you-handle- socket-disconnecting-in-java –
Đã trả lời [ở đây] (http://stackoverflow.com/a/17889321/207421). – EJP