[英]Reachability with Address - Server AND Port - iOS 5
我正在尝试检查服务器是联机还是脱机:我遇到的问题是,服务器在连接时具有端口
我目前的代码:
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));
}
}
现在,说了这么多,您确定这将做您想要的吗? SCNetworkReachabilityRef的文档建议不要:
“当应用程序发送到网络堆栈的数据包可以离开本地设备时,远程主机被认为是可到达的。可到达性不能保证主机会实际接收到该数据包。”
我已经解决了,我需要把线放好:
const char *serverIPChar = [serverIP cStringUsingEncoding:NSASCIIStringEncoding];
并更换里面的“fr7.mooshroom.net” inet_addr
到serverIPChar
。 不管怎么说,还是要谢谢你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.