【问题标题】:Java TCP sockets: Checking if remote end of connection is closed WITHOUT modifying socket's InputStream?Java TCP套接字:检查远程连接是否已关闭而不修改套接字的InputStream?
【发布时间】:2014-06-13 19:54:23
【问题描述】:

(注意 - 这不是重复的 - 问题明确提到不修改 InputStream。)

我希望能够在不修改套接字的 InputStream 的情况下检查连接的远程端是否关闭。我不能在 InputStream 上调用 read() ,因为它会读取数据,并且代码的其他部分将从套接字读取并期待该数据。

我也尝试使用长度为 0 的缓冲区调用 read(),但这也不起作用(返回 0 而不是 -1,即使连接断开)。

(我想我想做的是调用 read(),如果结果不是 -1,则将字节“推”回 InputStream。)

有没有办法解决这个问题?

谢谢!

【问题讨论】:

    标签: java sockets tcp


    【解决方案1】:

    您可以使用函数 isReachable() 来做到这一点。
    这是一个例子:http://kodejava.org/how-do-i-ping-a-host/

    【讨论】:

    • 不,我确定远程端是可达的,我只是想在不修改套接字的InputStream的情况下检查连接是否仍然存在。
    • isReachable() 不检查连接是否关闭。 -1
    猜你喜欢
    • 1970-01-01
    • 2013-04-29
    • 2016-08-03
    • 2012-09-06
    • 2014-09-09
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 2014-04-08
    相关资源
    最近更新 更多