我正在尝试检查服务器是否在线或离线:连接到服务器时我面临一个问题,即它有一个端口
我现在的代码:
struct sockaddr_in address;
address.sin_len = sizeof(address);
address.sin_family = AF_INET;
address.sin_port = htons(25667);
address.sin_addr.s_addr = inet_addr("fr7.mooshroom.net");
Reachability *reachability = [Reachability reachabilityWithAddress:&address];
请让我知道我做错了什么。请不要将我链接到其他问题,我已经搜索过,但没有一个有我要找的东西。
基本上 inet_addr() 函数不会为您进行域名解析。您需要向其传递一个 IP 地址(例如 127.0.0.1)。
要将 DNS 名称解析为 IP 地址,您需要查看标准 gethostbyname() 函数。
澄清:
struct hostent *host = gethostbyname("fr7.mooshroom.net");
if (host) {
struct in_addr in;
NSLog(@"HOST: %s" , host->h_name);
while (*host->h_addr_list)
{
bcopy(*host->h_addr_list++, (char *) &in, sizeof(in));
NSLog(@"IP: %s", inet_ntoa(in));
}
}
现在,说了这么多,您确定这会达到您想要的效果吗? SCNetworkReachability Ref 的文档建议不要:
http://developer.apple.com/library/ios/#documentation/SystemConfiguration/Reference/SCNetworkReachabilityRef/Reference/reference.html http://developer.apple.com/library/ios/#documentation/SystemConfiguration/Reference/SCNetworkReachabilityRef/Reference/reference.html
“当远程主机发送的数据包被认为是可达的
应用程序进入网络堆栈后,就可以离开本地设备。
可达性并不能保证数据包实际上会被
被主人接收了。”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)