2015-08-26 14 views
6

Internet bağlantısı olmayan özel bir ağda basit bir Java sunucusuna sahip bir sistem geliştiriyorum, mobil aygıtların ağa ve sunucuya bağlanmasına olanak sağlayan bir Wifi yönlendiricisi, bağlanan bir iOS uygulaması TCP kullanarak sunucu. Ağa hücresel olmayan bir cihaz (ör.: IPod touch) ağa Wifi yönlendirici üzerinden bağlandığında, sunucuya bağlanırken bir sorun olmadığını buldum. Ancak, bir iPhone'u WiFi hotspot'una bağlarken, cihazdaki istemci uygulamasının sunucuyu bulmak için 5 dakikadan fazla zaman alır.Çevrimdışı ağda sunucuya iPhone uygulama bağlantısı

İnternet bağlantısı yoksa, cihazın internet erişimi için hücresel şebekesini kullanacağına inanıyorum. Bir gözlemden, sıcak noktaya bağlandıktan sonra, bazı çevrimiçi bildirimler telefona aktarılmaya devam etti (ağda internet erişimi olmadığından% 100 eminim), ancak birkaç dakika sonra artık internet erişimi yoktu ve telefon sunucuya bağlanabildi.

Soru şu ki iPhone için sunucuya anlık bağlantıyı nasıl kurabilirim? Bağlı olan müşteri cihazlarını internet erişimi olduğunu düşünmeye zorlayan bir şey var mı?

cevap

1

Sunucu için herhangi bir yük dengeleyici var mı?

Diğer seçenek, wifi kapalıysa ağ veya kablosuz bağlantıyı kontrol edebilmenizdir.

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)).takeRetainedValue() 
    } 

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

    let isReachable = (flags & UInt32(kSCNetworkFlagsReachable)) != 0 
    let needsConnection = (flags & UInt32(kSCNetworkFlagsConnectionRequired)) != 0 

    return (isReachable && !needsConnection) ? true : false 
} 
+0

Sunucuda yük dengeleyici yok, çok basit bir Java sunucusudur. Soruda belirtildiği gibi, yalnızca iPhone'ların sunucuya bağlanması sorunu var. Wifi ağı İnternet bağlantısı sağlamıyor, bu yüzden cihazın internete erişmek için hücresel bağlantısını kullandığını sanıyorum. Ancak, bağlantı bazen daha sonra kurulur. – user945711