- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我准备了一个小应用程序。当我重新启动 iPhone 3G(使用 3G 互联网连接)并安装此应用程序时,getaddrinfo()
总是返回 EAI_NONAME
(8)。我关闭应用程序并运行 Safari,然后运行我的应用程序 - 一切正常。有什么问题?
- (void)viewDidLoad {
[super viewDidLoad];
const char* hostname = "google.com";
struct addrinfo hints, *res;
int retval;
memset (&hints, 0, sizeof (struct addrinfo));
hints.ai_family = PF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
retval = getaddrinfo (hostname, NULL, &hints, &res);
if (retval == 0) {
freeaddrinfo (res);
}else if(retval == EAI_NONAME)
{
//noname
}
}
Apple 的回答:
Hello Pavel,
I'm responding regarding your finding that trying to use the BSD getaddrinfo function is problematic when trying to get a connection where only a Wireless Wide Area Network (WWAN) connection is possible (EDGE, 3G). The issue you've encountered is that for battery saving reasons, WWAN will shutdown when network services are not needed. The question then becomes, how to activate WWAN, when network services are required.
The officially supported mechanism to establish a WWAN connection is to use the CFSocketStream API (or dependent API - NSSocket, as well as CFHTTPStream, CFFTPStream, NSURLRequest, and NSURLConnection API's). This means that officially, only TCP is supported. This limitation impacts all UDP and BSD Socket based applications. The use of a BSD Connect call will not trigger the iPhone to enable WWAN. This limitation also applies to all other BSD functions which under a WiFi connection would result in a packet transmission.
However, under the current iPhone OS, once a WWAN connection is established, the use of BSD sockets and CFSocket functions, will keep the WWAN connection alive. This makes it possible for a UDP or BSD Socket based application to establish a WWAN connection by using the CFSocketStream API to establish a connection with a TCP server (including HTTP Web Servers). Once the connection is active, then the program can function as it has in the past. This is what Safari, Mail, and other Apple applications which access network services, uses to establish their connections. For this reason, when you launch Safari, then launch your application network access works. Using Safari causes the iPhone to establish a WWAN connection. When you quit Safari, WWAN does not automatically shutdown - it remains active for a short period of time. If you launch your application, WWAN services are active and your application will cause WWAN to remain active so long as there is network activity.
If your application were to use TCP, for networking, then you could modify your code to use the CFSocketStream or dependent API, for networking. Of course, if you have a whole library of BSD socket functionality, this may not be a reasonable solution for someone who wants to get their application onto the App Store real soon.
....
最佳答案
这里可能发生的是 getaddrinfo()
没有阻止等待 DNS 查找,这可能是一件好事,因为 iPhone 上的 DNS 查找可能需要很长时间。一旦您在别处完成查找,它就会为您提供缓存的答案。
看看CFHost ,这是在 iPhone 上获取此类信息的首选方式。它支持异步回调,让您知道信息何时可用,或者您也可以根据需要进行同步调用。
关于iphone - 在 iPhone 中获取地址信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1238934/
目前,我有以下设置: A记录: mydomain.com - aaa.aaa.aaa.aaa subdomain.mydomain.com - aaa.aaa.aaa.aaa NS记录: mydoma
有人可以帮助我以最佳方式在流畅的 nHibernate 中映射以下情况吗? Address 类用于 Client 和 Company。如何在 SQL 中最有效地存储它?映射应该是什么样的?我已经考虑过
我正在尝试编写一个 Windows 应用程序,它将在来自 PC 的以太网链接上生成流量。 我想使用 webBrowser 控件不断拉取网页以产生流量。 在这种情况下,我希望每个 webBrowser
我正在编写一个 SIP 堆栈,我需要在消息中插入一个 IP 地址。该地址必须是用于发送消息的地址。我知道目标 IP 并且需要确定将用于发送消息的 NIC(其地址).... 最佳答案 为了扩展 Remy
如何使用 IP 地址获取 MAC 地址,但以下代码不起作用 packet = ARP(op=ARP.who_has,psrc="some ip",pdst = ip) response = srp(p
目前我想知道如何实现对本地无线网络(路由器)的获取请求以获取当前连接到当前连接的 LAN 的所有设备.... 所以我做了一些研究,显然“nmap”是一个终端/命令提示符命令,它将连接的设备返回到本地无
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicates: how to find MAC address in MAC OS X programmatically
我们正在为 ipad 开发一个 iOS 应用程序,它使用 bonjour 与其他设备连接,使用 couchbaseListener 与对等数据库进行复制。我们观察到,每当 [nsnetservice
我创建了 3 个实例,其中 3 个弹性 IP 地址指向这些实例。 我做了 dsc 的 yum 安装:dsc12.noarch 1.2.13-1 @datastax 并且/etc/cassandra/d
我正在尝试获取规模集中所有虚拟机的私有(private) IP 地址列表(没有一个虚拟机故意拥有任何公共(public) IP 地址)。我找到了如何从 az cli 获取此内容,如下所示: az vm
我正在尝试获取规模集中所有虚拟机的私有(private) IP 地址列表(没有一个虚拟机故意拥有任何公共(public) IP 地址)。我找到了如何从 az cli 获取此内容,如下所示: az vm
我正在尝试与该端口上的任何 IP 建立连接。最初,我将其设置为 10.0.0.7,这是我网络上另一台计算机的 IP,因此我可以测试客户端/服务器。但是,我希望它可以与任何计算机一起使用而不必将 IP
作为序言,我开发了自己的 CRM(类似于 SalesForce 或 SAP),其“规模”要小得多,因为它面向服务,而不是销售。我在 Ubuntu 16.04 服务器上使用 MySql 或 MariaD
在我的项目中,我想做如下事情: static void test0(void) { printf("%s [%d]\n", __func__, __LINE__); } static void
我的机器上有两个网卡,配置了两个独立的 IP 地址。两个 IP 地址都属于同一个网络。我是否正确地说,当我创建一个特定于这些 IP 地址之一的套接字时? 更新: 这是我的情况: 我有一个位于 192.
当然,我意识到没有一种“正确的方法”来设计 SQL 数据库,但我想就我的特定场景中的优劣获得一些意见。 目前,我正在设计一个订单输入模块(带有 SQL Server 2008 的 Windows .N
我们将保存大量地址数据(在我公司的眼中,每个客户大约有150.000至500.000行)。 地址数据包含约5列: 名称1 名称2 街(+否) 邮政编码 市 也许以后再添加一些东西(例如电话,邮件等)
好的,我们在生产中实现了 Recaptcha。我们收到错误是因为它无法到达使用该服务所需的 IP 地址。我们为 IP 地址打开一个端口以到达 Google。没问题。我们这样做并显式配置该 IP 地址以
此页面使用 Drupals 联系表发送电子邮件:http://www.westlake.school.nz/contact 问题是,学校员工使用 outlook。当他们收到来自 parent 等的电子
是否可以将用户输入的邮政编码转换为文本框并将其转换为CLLocation?我正在尝试比较其当前位置与地址或邮政编码之间的距离,如果可以从NSString中创建CLLocation,这将很容易。 最佳答
我是一名优秀的程序员,十分优秀!