iPhone应用程序连接到脱机网络中的服务器

Fri*_*ice 6 networking private ios server

我正在开发一个系统,它在没有Internet连接的专用网络中有一个简单的Java服务器,一个允许移动设备连接到网络和服务器的Wifi路由器,一个使用TCP连接到服务器的iOS应用程序.我发现当非蜂窝设备(例如:iPod touch)通过Wifi路由器连接到网络时,连接到服务器没有问题.但是,将iPhone连接到Wifi热点时,设备上的客户端应用程序需要5分钟以上才能找到服务器.

我相信,如果没有互联网连接,设备将使用其蜂窝网络进行互联网访问.从一个观察来看,在连接到热点之后,一些在线通知仍然被推送到手机(我百分之百确定网络中没有互联网访问),但几分钟后,就不再有互联网接入和手机能够连接到服务器.

所以问题是我如何才能实现iPhone服务器的即时连接?是否有任何欺骗连接的客户端设备认为有互联网访问?

Kar*_*los 1

服务器有负载均衡器吗?

其他选项是您可以检查网络或 wifi 连接,如果 wifi 关闭则显示提示。

 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
}
Run Code Online (Sandbox Code Playgroud)