首页 > 解决方案 > 线程死亡时关闭套接字

问题描述

当 Java 程序终止(通过异常或手动)时,我在关闭套接字时遇到问题。我可以使用一些帮助!

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

    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 编写了一个简单的客户端,我注意到当我在运行时中断客户端时,它仍然关闭套接字(服务器与客户端断开连接),我希望在我的程序中具有相同的行为。

谢谢!!

标签: javamultithreadingsockets

解决方案


推荐阅读