我正在构建一个客户端-服务器应用程序,我必须在其中实现一个保活机制,以检测客户端是否崩溃。我在客户端和服务器端都有单独的线程。客户端线程发送一个“ping”然后休眠 3 秒,而服务器读取BufferedInputStream
并检查是否收到 ping,如果是,则使 ping 计数器等于 0,否则它将计数器增加 +1,然后服务器线程休眠3 秒内,如果 ping 计数器达到 3,它就宣布客户端死亡。
问题是,当服务器读取输入流时,它是一个阻塞调用,它阻塞直到接收到下一个 ping,不管它有多延迟,所以服务器永远不会检测到错过的 ping。
任何建议,以便我可以读取流的当前值,并且如果传入流中没有任何内容,它不会阻塞。
谢谢,