Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.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_Android_Sockets_Serversocket - Fatal编程技术网

Java 如何关闭服务器套接字?

Java 如何关闭服务器套接字?,java,android,sockets,serversocket,Java,Android,Sockets,Serversocket,我有一个使用服务器套接字的多线程应用程序。这是一个Android应用程序。现在,由于网络接口的变化(WiFi到以太网,反之亦然)导致IP发生变化,我需要关闭旧的插座并打开新的插座。我正试图关闭插座,如下所示;但是,IOException会在几毫秒后启动 public void run() { while(true) { socket = serverSocket.accept(); read(); if (stopFlag)

我有一个使用服务器套接字的多线程应用程序。这是一个Android应用程序。现在,由于网络接口的变化(WiFi到以太网,反之亦然)导致IP发生变化,我需要关闭旧的插座并打开新的插座。我正试图关闭插座,如下所示;但是,
IOException
会在几毫秒后启动

public void run()
{
    while(true)
    {
        socket = serverSocket.accept();
        read();
        if (stopFlag)
        {
             serverSocket.close(); 
             socket.close();
             break;     
        }
    }
}

这是正确的方法吗?

尝试在服务器套接字之前关闭套接字。您所做的事情没有明显的错误。您看到了什么
IOException
(它的消息是什么?),它发生在哪一行?@LoganDam,这不会改变任何事情。在read()中,我打开输入/输出流,当然,它在try-catch中,这就是我得到异常的地方。是因为SocketException包装了IOException吗?这就引出了另一个问题。read()是阻塞调用吗?我的意思是,如果流返回-1,那么我们就知道没有数据读取或流结束。如果什么也不回来怎么办?它是否应该在while循环中循环,直到我设置stopFlag=true?