当我突然更改 wifi 网络时,我的应用程序中的 serversocket 会发生什么情况?我猜它会关闭,因为我的设备将获得一个新的 IP,至少在 TCP 中,UDP MulticastSocket 也容易出现这种情况吗?以及当网络发生变化时如何结束之前的Server socket线程并启动一个新的呢?一种解决方案是使用超时,另一种解决方案是使用一个标志来指示无限循环是否应该结束,但由于监听套接字是一个阻塞函数,因此无论如何都会产生异常/错误。
任何想法将不胜感激! :)
编辑:我的服务器线程的示例。
ServerSocket ss = new ServerSocket(4445);
while(true){
Socket socket = ss.accept();
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
Object obj = in.readObject();
Log.i("TAG", "Received: " + obj.toString());
in.close();
socket.close();
}
最佳答案
TCPIP 连接将中断。因此客户端必须再次连接。
只要重新连接后您的 IP 不发生变化,UDP 就可以了。当然,如果您传输 UDP,这不会对该机器产生影响。
如果是您可以处理的 TCPIP,您应该会得到一个异常。
关于java - 当我切换 wifi 网络时,TCP/UDP 服务器套接字会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8359703/