Для обнаружения подключения к Интернету я использовать простой класс:Обнаружение потери пакетов
public class Reachability {
class func isConnectedToNetwork() -> Bool {
var zeroAddress = sockaddr_in()
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) {
return false
}
let isReachable = (flags.rawValue & UInt32(kSCNetworkFlagsReachable)) != 0
let needsConnection = (flags.rawValue & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
return (isReachable && !needsConnection)
}
}
Тогда в моей проверки кода:
if Reachability.isConnectedToNetwork() == false {
print("error")
}
Но это не достаточно для меня ... Возможно ли это, чтобы обнаружить потеря пакетов или что-то еще. Потому что, когда я имитировать эту связь:
я получил неправильные результаты. В моем приложении.
iOS или OSX? Если вы используете iOS, вы можете использовать IOS Network Link Conditioner. Я думаю, вы не можете обнаружить потерю пакетов. Но вместо этого вы можете обнаружить потерянное сетевое соединение. Библиотеки, такие как AFNetworking, даже предоставляют механизм автоматического повтора. – Raptor
Я создаю приложение ios – Arti
Есть ли решение вроде: if network.isBad() {}?: D – Arti