当应用程序需要访问网络时,它首先应该检查设备的网络状态,确认设备的网络环境及连接情况,并针对这些情况提醒用户做出相应的处理。最好能监听设备的网络状态的改变,当设备网络状态连接、断开时,程序也应该有相应的处理。
-
Proto:表示连接使用的协议,常见的有tcp、udp和tcp6等;
-
Recv-Q:指接收队列,这个数字一般都应该是0,如果不是则表示数据包正在队列中堆积。拿Tomcat服务器举个列子:当Tcp连接建立后,Tomcat服务器中会有一个accepter线程取出这个连接让worker线程处理,现在假如连接建立的速度远远大于accepter线程取连接的速度,那么连接就在队列中堆积,此时Recv-Q就会大于0;还有一种可能就是系统遭遇到了Dos攻击,已经不能再响应外部请求;
-
Send-Q:发送队列,对方没有收到的数据或者说没有Ack的,还是本地缓冲区,如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快;
除了直接检测网络连接状态之外,有时候程序还需要监听网络状态的改变。当网络断开连接时,提醒用户,网络连接已经断开,应用可能需要暂停;当网络重新连接时,再次提醒用户,应用可以继续运行。程序获取Reachability对象之后,调用Reachability对象的startNotifier方法即可开启该对象的被监听状态——当Reachability的连接状态发生改变时,该对象将会发送一个kReachabilityChangedNotification通知给默认的通知中心,因此程序只要使用默认的通知中心监听该通知即可。
|