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