有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Javasocket断开连接报告与C断开连接

在C#中,当socket连接终止时,在终止链路之前会通知另一个节点,因此发回的节点可以更新连接状态

在Java中,当我终止一个通信链接时,另一个节点会继续报告该连接是有效的

我是否需要实现一个读取周期(有意义),当它在读取过程中接收到-1时报告连接丢失(在C中,我认为这是0)

谢谢你的洞察力

编辑:谢谢你们两位。正如我在帖子中怀疑并提到的,需要进行额外的检查以确认连接的连接状态


共 (2) 个答案

  1. # 1 楼答案

    在java中,只有在读取/写入套接字或查询输入流状态(例如InputStream.available())时,才能发现套接字的另一端被关闭。我认为没有任何异步通知表明另一端已关闭

    您如何测试插座是否仍然打开

    您可以轮询InputStream.available()方法,如果返回-1,您就知道套接字已关闭。当然,如果符合您的使用习惯,您也可以读取数据

    InputStream.available()

  2. # 2 楼答案

    如果连接的远程端断开,如果可以检测到断开,通常会从InputStream/InputChannel收到IOException。如果无法检测到断开连接,当套接字读取超时时,最终将抛出IOException。它等待超时的时间长度可以使用套接字进行调整。setSoTimeout()