您的位置:首页 > 理论基础 > 计算机网络

swift基础判断网络连接

2016-06-16 01:22 477 查看
import Foundation
import SystemConfiguration

public class Reachability {

class func isConnectedToNetwork() -> Bool {

var zeroAddress = sockaddr_in(sin_len: 0, sin_family: 0, sin_port: 0, sin_addr: in_addr(s_addr: 0), sin_zero: (0, 0, 0, 0, 0, 0, 0, 0))
zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
zeroAddress.sin_family = sa_family_t(AF_INET)

let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))
}

var flags: SCNetworkReachabilityFlags = []
if SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) == false {
return false
}

let isReachable = flags.contains(.Reachable)
let needsConnection = flags.contains(.ConnectionRequired)

return isReachable && !needsConnection
}

}
class ViewController: UIViewController {

@IBOutlet weak var checkingLabel: UILabel!

override func viewDidAppear(animated: Bool) {
checkConnectivity()
}
override func viewDidLoad() {
super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

func checkConnectivity() {
print(Reachability.isConnectedToNetwork(), terminator: "")
if Reachability.isConnectedToNetwork() == false {
let alert = UIAlertController(title: "Alert", message: "Internet is not working", preferredStyle: UIAlertControllerStyle.Alert)
self.presentViewController(alert, animated: false, completion: nil)
let okAction = UIAlertAction(title: "Retry", style: UIAlertActionStyle.Default) {
UIAlertAction in
alert.dismissViewControllerAnimated(false, completion: nil)
//self.checkConnectivity()
}
alert.addAction(okAction)
checkingLabel.text = ""
}
else {
checkingLabel.text = "Connected"
}
}
}


没网没有网的时候回弹出警告框
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: