gpt4 book ai didi

java - 强制关闭远程应用程序后检测Socket关闭

转载 作者:行者123 更新时间:2023-11-29 07:42:51 25 4
gpt4 key购买 nike

我在使用 Java 套接字时遇到了一些问题。我有一对在它们之间建立连接的应用程序(一个打开 ServerSocket,调用 accept() 并等待,另一个通过 Socket( InetAddress,int) 构造函数。

套接字连接建立后,一个Thread被创建,这个Runnable

 public void run() {    
System.out.print("Watching Socket for closing ");
while(running) {
if(socket.isClosed()) {
System.out.println("Socket has been closed");
break;
}
}
this.running = false;
//safely ends this application by closing i/o and exiting.
}

我的问题是当其中一个应用程序意外关闭时(在我的例子中从 Eclipse 终止)调用 Socket.isClosed() 仍然显示套接字已打开,因此循环继续运行如果套接字打开。

强制结束对方Java应用程序时,如何检测Socket何时关闭?

最佳答案

socket.isClosed() 返回 true 的唯一方法是您调用自己 socket.close() 因为这是唯一设置 boolean 值的部分为 true

你可以做的是简单地尝试使用 inputStreamsocket 中读取,如果关闭则返回 -1(如果流的末尾已被达到)。

参见 documentation获取更多信息。

关于java - 强制关闭远程应用程序后检测Socket关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28484032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com