最近在做东西的时候,遇到收通知很慢的问题,后来才现是使用不当。
1.版本问题
使用2.0之前及之后,不太一样。2.0前的没用过,就不多说了,看下面文章即可。
判断是否打开WiFi以及是否打开3G的用法还真没见过。
2.用法问题
用法的话,开始启动时应该就有一个值,当前网络的状态,通知与首次无关。
以下为转
[iOS]网络编程专题:Reachability的使用
reachabilityappleiOS
什么是UDP和TCP的区别是什么?
TCP的全称为传输控制协议。这种协议可以提供面向连接的、可靠的、点到点的通信。
UDP全称为用户数据报协议,它可以提供非连接的不可靠的点到多点的通信。
用TCP还是UDP,那要看你的程序注重哪一个方面?可靠还是快速?
TCP/IP 建立连接的过程
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送连接请求到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到客户端连接请求,向客户端发送允许连接应答,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的允许连接应答,向服务器发送确认,客户端和服务器进入通信状态,完成三次握手。
(所谓的三次握手就是要有三次连接信息的发送/接收过程。TCP连接的建立需要进行三次连接信息的发送/接收。)
一:确认网络环境3G/WIFI
1.添加源文件和framework
开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息。如果没有处理它们,是不会通过Apple的审(我们的)查的。
Apple 的 例程Reachability中介绍了取得/检测网络状态的方法。要在应用程序程序中使用Reachability,首先要完成如下两部:
1.1.添加源文件:
在你的程序中使用Reachability 只须将该例程中的 Reachability.h 和 Reachability.m拷贝到你的工程中。如下图:
1.2.添加framework:
将SystemConfiguration.framework 添加进工程。如下图:
2.网络状态
Reachability.h中定义了三种网络状态:
typedef enum{
NotReachable =0, //无连接
ReachableViaWiFi, //使用3G/GPRS网络
ReachableViaWWAN //使用WiFi网络
}NetworkStatus;
因此可以这样检查网络状态:
Reachability*r = [ReachabilityreachabilityWithHostName:@“www.apple.com”];
switch ([rcurrentReachabilityStatus]) {
case NotReachable:
// 没有网络连接
break;
case ReachableViaWWAN:
// 使用3G网络
break;
case ReachableViaWiFi: