0

我在java中有一个客户端和一个服务器程序。服务器正在通过 wifi 向客户端发送数据。客户端的 wifi 连接中断会导致它抛出异常并退出接收循环。服务器仍在继续发送数据。服务器使用的方法是oos.writeObject()。如何检测服务器客户端的 wifi 中断并导致服务器退出发送循环?

4

1 回答 1

0

您的客户端(在某些类型的 wifi 连接失败模式下)在连接消失时立即通知的原因是因为 wifi 接口是客户端本地的,并且操作系统一旦检测到它就将其删除。从服务器的角度来看,它是一个遥远的网络链接发生故障。

当连接断开时,首先服务器会继续缓冲数据。如果缓冲区(服务器的操作系统缓冲区加上 TCP 窗口大小)变满,如果服务器尝试发送更多数据,它将阻塞。

稍后,如果连接仍然断开,服务器将声明连接已超时,您将收到异常。相反,如果连接恢复,缓冲区将清空并恢复正常数据流。

即使可以,您实际上也不想更改任何内容,以便在任何遥远的网络跃点发生故障时服务器的连接立即超时。如果你这样做了,你的连接将非常脆弱:每一个小的网络重新收敛事件或短暂的短暂故障都会破坏你的连接。

于 2013-02-25T19:22:10.307 回答