Java 当一根线断开时关闭一个插座
当Java程序终止时(异常或手动),我在关闭套接字时遇到问题。我需要一些帮助 我正在用Java编写一个程序,它使用TCP套接字与服务器通信。 我有一个由两个线程使用的套接字——一个用于发送数据,另一个用于接收数据。我目前处理这个问题的想法是在接收数据线程死亡时关闭套接字(我希望听到更多想法)。当线程(整个程序)终止时,我没有找到任何方法来关闭套接字。当线程死亡时,有没有方法调用close方法?(寻找类似C++的析构函数的东西) Iv'e尝试使用语句并最终尝试,但没有成功Java 当一根线断开时关闭一个插座,java,multithreading,sockets,Java,Multithreading,Sockets,当Java程序终止时(异常或手动),我在关闭套接字时遇到问题。我需要一些帮助 我正在用Java编写一个程序,它使用TCP套接字与服务器通信。 我有一个由两个线程使用的套接字——一个用于发送数据,另一个用于接收数据。我目前处理这个问题的想法是在接收数据线程死亡时关闭套接字(我希望听到更多想法)。当线程(整个程序)终止时,我没有找到任何方法来关闭套接字。当线程死亡时,有没有方法调用close方法?(寻找类似C++的析构函数的东西) Iv'e尝试使用语句并最终尝试,但没有成功 public c
public class Receive implements Runnable {
....
....
public void run() {
Socket socket = getSocket() // Gets socket from a singleton class.
....
while (true){
....
readFromSocketFunction();
....
}
....
} // Would like to close the socket when going out from this scope.
....
}
现在,当我终止程序时,套接字仍然有效。我用Python编写了一个简单的客户机,我注意到,当我在运行时中断客户机时,它仍然会关闭套接字(服务器与客户机断开连接),我希望在我的程序中有相同的行为
谢谢 你说终止这个计划是什么意思?你有没有从while循环中退出?您是否从操作系统发送术语信号?
尝试{…}最后{socket.close();}
(为简洁起见忽略异常…)我编辑了这篇文章。我所说的终止是指手动终止或异常终止。我真的怀疑程序(真的)停止后是否会有任何打开的套接字。如何运行Runnable
?也许你应该读一下。我不知道这个套接字是否还在运行,或者只是没有正确关闭。我可以肯定的是,当我使用Python客户机并且它关闭时,服务器会识别断开连接,而在我的情况下,它不会。此外,当我手动关闭程序中的套接字时,它会工作,服务器会识别断开连接。终止程序是什么意思?你有没有从while循环中退出?您是否从操作系统发送术语信号?尝试{…}最后{socket.close();}
(为简洁起见忽略异常…)我编辑了这篇文章。我所说的终止是指手动终止或异常终止。我真的怀疑程序(真的)停止后是否会有任何打开的套接字。如何运行Runnable
?也许你应该读一下。我不知道这个套接字是否还在运行,或者只是没有正确关闭。我可以肯定的是,当我使用Python客户机并且它关闭时,服务器会识别断开连接,而在我的情况下,它不会。此外,当我手动关闭程序中的套接字时,它会工作,服务器会识别断开连接。