2

我想用苹果示例代码中的reachability.h 和reachability.m 编写一个ip-check。

我想使用这个功能:

+ (Reachability*) reachabilityWithAddress: (const struct sockaddr_in*) ipAddress;

所以它得到一个 sockaddr_in 结构。

我到目前为止:

struct sockaddr_in ipAddress;
    ipAddress.sin_len = sizeof(ipAddress);
    ipAddress.sin_family = AF_INET;
    ipAddress.sin_port = 80;
    struct  in_addr sin_addr = ???; //???
    char        sin_zero[8];

ip 地址也是一个结构。

struct in_addr {
    in_addr_t s_addr;
};


typedef __uint32_t      in_addr_t;  /* base type for internet address */

但是我怎样才能在结构中放置一个 IP 地址呢?我必须使用哪种格式?例如 192.168.2.2 不起作用。

提前谢谢。

4

1 回答 1

1

您可以使用inet_pton()(defined in <arpa/inet.h>) 将包含网络地址的字符串转换为网络格式。请注意,您必须将端口号从主机字节顺序转换为网络字节顺序:

struct sockaddr_in ipAddress;
ipAddress.sin_len = sizeof(ipAddress);
ipAddress.sin_family = AF_INET;
ipAddress.sin_port = htons(80);
inet_pton(AF_INET, "192.168.2.2", &ipAddress.sin_addr);
于 2013-05-02T09:39:25.970 回答