当前位置:  开发笔记 > 运维 > 正文

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

如何解决《iPhoneEDGE/3G网络端口范围?有人知道吗?》经验,为你挑选了1个好方法。

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

A.如果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;

}



1> tcurdt..:

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

"可达性"反映了应用程序发送到网络堆栈的数据包是否可以离开本地计算机.请注意,可达性并不能保证主机实际接收数据包.

这与NAT或端口​​限制无关.路由基于地址 - 而不是端口.所以你能找到的(通过SCNetworkReachability API)是否(理论上​​)可以到达机器的界面.它不会尝试在某个端口上建立连接.

因此,为了找出该服务是否可达,您将不得不尝试自己测试.最好在SCNetworkReachability API告诉您可以建立连接时.只需尝试连接到端口61616上的服务器,看看是否有连接或超时.适当的超时值和处理在这里至关重要.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有