当我突然改变WiFi网络时,我的应用中的serversocket会发生什么?我猜它会关闭,因为我的设备会得到一个新的IP,至少在TCP中,UDP MulticastSocket是否也容易出现这种情况?以及如何在网络更改时结束以前的服务器套接字线程并启动一个新线程?一种解决方案是使用超时,另一种方法是使用一个标志来指示无限循环是否应该结束,但由于监听套接字是一种阻塞功能,因此无论如何它都会产生异常/错误。当我切换wifi网络时,TCP/UDP serversocket会发生什么?
任何想法可以理解的! :)
编辑:我的服务器线程的示例。
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();
}
它是一个whiel,因为我研究过这一点:不UDP首先建立某种联系?随机爆炸没有连接的UDP数据包只是看起来不会工作 – TheLQ
@TheLQ:据我所知,它只是传输一个包含目标ip和端口的数据包。它不保证交付。它直到网络基础设施来传递数据包。因为它是无连接的,所以它不会受到网络故障的影响。 –
@TheLQ UDP是无连接协议,因此不建立连接。 (也可以调用connect()在UDP套接字但这一切确实设置为发送一个默认的IP地址/端口()发送到,它实际上并没有改变任何事物的逻辑) –