iphone - iPhone EDGE/3G网络端口范围?有人知道吗

标签 iphone networking sockets asyncsocket

我试图在我的iPhone应用程序中访问61616,SCReachability代码表明我有一个有效的网络,但是我超时尝试写入61616。有人知道吗:

答:如果iPhone EDGE/3G网络的端口范围有限,或者不允许连接到此端口?

B.如何显式检查对此端口的访问。这是我的“网络可达”代码(从Apple的示例中借用),该代码检查“foo.bar.com”,但未显示如何检查“foo.bar.com:61616”。

任何帮助表示赞赏!

- (BOOL)isDataSourceAvailable{
static BOOL checkNetwork = YES;
BOOL _isDataSourceAvailable = NO;
if (checkNetwork) { // Since checking the reachability of a host can be expensive, cache the result and perform the reachability check once.
    checkNetwork = NO;

    Boolean success;    
    const char *host_name = "foo.bar.com";

    SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL, host_name);
    SCNetworkReachabilityFlags flags;
    success = SCNetworkReachabilityGetFlags(reachability, &flags);
    _isDataSourceAvailable = success && (flags & kSCNetworkFlagsReachable) && !(flags & kSCNetworkFlagsConnectionRequired);
    CFRelease(reachability);
}
return _isDataSourceAvailable;

}

最佳答案

SCNetworkReachability API仅检查地址是否可以路由到。引用文档:

"Reachability" reflects whether a data packet, sent by an application into the network stack, can leave the local computer. Note that reachability does not guarantee that the data packet will actually be received by the host.



这与NAT或端口​​限制无关。路由是基于地址的,而不是基于端口的。因此,您可以发现(通过SCNetworkReachability API)(理论上)是否可以到达计算机的界面。它不会尝试在特定端口上建立连接。

因此,为了确定该服务是否可用,您将不得不尝试自己进行测试。最好在SCNetworkReachability API告诉您可以建立连接时。只需尝试在端口61616上连接到服务器,然后查看是否获得连接或超时即可。正确的超时值和处理在这里至关重要。

关于iphone - iPhone EDGE/3G网络端口范围?有人知道吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/539284/

相关文章:

iphone - UIWebView 中嵌入的电影播放器​​确实在 iPhone 上进入了全屏,但在 iPad 上没有

objective-c - 如何将类属性声明为枚举类型

iphone - Objective-C 中的公共(public)范围?

networking - 谁是 UDP 中的服务器,谁是客户端?

python - 如何创建/调用/关闭独立的python进程

node.js - 如何在 node.js http 模块超时时发送响应

ios - 使用 UIPanGestureRecognizer 和旋转的 Tinder 类动画

c++ - 安全服务器不工作

java - 如何让聊天程序服务器向所有连接的java客户端发送消息

Python Web 服务器 - 分割文件名时出现 IndexError