可与地址连接 - 服务器和端口 - iOS 5

21z*_*ch2 4 iphone ping objective-c reachability

我正在尝试检查服务器是在线还是离线:我遇到连接到它时有端口的问题

我的代码目前:

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];
Run Code Online (Sandbox Code Playgroud)

请让我知道我做错了什么.请不要把我与其他问题联系起来,我已经搜索过了,没有人能找到我正在寻找的东西.

Chr*_*isH 5

基本上,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));
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,说了这么多,你确定这会做你想要的吗?SCNetworkReachabilityRef的文档建议不要:

http://developer.apple.com/library/ios/#documentation/SystemConfiguration/Reference/SCNetworkReachabilityRef/Reference/reference.html

"当应用程序发送到网络堆栈的数据包可以离开本地设备时,远程主机被认为是可达的.可达性并不能保证主机实际接收数据包."

  • 嗯,是的..你不明白.啊好吧 无论如何,欢迎你. (2认同)