IOS 檢測網路連結是否可用 – 3

來源:互聯網
上載者:User

在上面兩篇中介紹了如何擷取網路狀態與sock的簡單介紹,到此大概對socket有一點瞭解,下面介紹ios的

SCNetworkReachability類的應用,在IOS中SystemConfiguration架構套件含連網相關的函數,可以檢查網路連接狀態。在

SCNetworkReachability.h定義測試網路連接狀態的函數,具體看下面:


一:建立測試網路引用

(1)SCNetworkReachabilityRef       SCNetworkReachabilityCreateWithAddress
(     //根據傳入的地址建立網路連接引用
    CFAllocatorRef allocator,                        //可以為NULL或kCFAllocatorDefault
    const struct sockaddr *address  //需要測試連接的IP地址

    );    

     注意:當address為0.0.0.0時則可以查詢原生網路連接狀態。同時返回一個引用必須在用完後釋放。

(2)SCNetworkReachabilityRef     SCNetworkReachabilityCreateWithName
(         //根據傳入的網址建立網路連接引用
  CFAllocatorRef allocator,//可以為NULL或kCFAllocatorDefault
  const char *nodename//比如為"www.baidu.com",此參數為網域名稱

     );    

注意:當address為0.0.0.0時則可以查詢原生網路連接狀態。同時返回一個引用必須在用完後釋放。


釋放用 CFRelease(SCNetworkReachabilityRef
 ref );


二:擷取網路連接狀態(是否存在網路連接):
Boolean SCNetworkReachabilityGetFlags (          //用來獲得網路連接的狀態
    SCNetworkReachabilityRef target,//之前建立的網路連接的引用
    SCNetworkReachabilityFlags *flags//儲存確定串連是否獲得的狀態
);   


SCNetworkReachabilityFlags:儲存返回的測試連接狀態
其中常用的狀態有:
kSCNetworkReachabilityFlagsReachable:能夠串連網路
kSCNetworkReachabilityFlagsConnectionRequired:能夠串連網路,但是首先得建立串連過程
kSCNetworkReachabilityFlagsIsWWAN:判斷是否通過蜂窩網覆蓋的串連,比如EDGE,GPRS或者目前的3G.主要是區別通過WiFi的串連。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.