Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当一根线断开时关闭一个插座_Java_Multithreading_Sockets - Fatal编程技术网

Java 当一根线断开时关闭一个插座

Java 当一根线断开时关闭一个插座,java,multithreading,sockets,Java,Multithreading,Sockets,当Java程序终止时(异常或手动),我在关闭套接字时遇到问题。我需要一些帮助 我正在用Java编写一个程序,它使用TCP套接字与服务器通信。 我有一个由两个线程使用的套接字——一个用于发送数据,另一个用于接收数据。我目前处理这个问题的想法是在接收数据线程死亡时关闭套接字(我希望听到更多想法)。当线程(整个程序)终止时,我没有找到任何方法来关闭套接字。当线程死亡时,有没有方法调用close方法?(寻找类似C++的析构函数的东西) Iv'e尝试使用语句并最终尝试,但没有成功 public c

当Java程序终止时(异常或手动),我在关闭套接字时遇到问题。我需要一些帮助

我正在用Java编写一个程序,它使用TCP套接字与服务器通信。 我有一个由两个线程使用的套接字——一个用于发送数据,另一个用于接收数据。我目前处理这个问题的想法是在接收数据线程死亡时关闭套接字(我希望听到更多想法)。当线程(整个程序)终止时,我没有找到任何方法来关闭套接字。当线程死亡时,有没有方法调用close方法?(寻找类似C++的析构函数的东西) Iv'e尝试使用语句并最终尝试,但没有成功

    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客户机并且它关闭时,服务器会识别断开连接,而在我的情况下,它不会。此外,当我手动关闭程序中的套接字时,它会工作,服务器会识别断开连接。