POSIX插座;从sockaddr_in结构中解密主机名

时间:2010-10-08 13:38:05

标签: sockets posix

在给定sockaddr_in结构的情况下,是否可以破译主机名?

struct sockaddr_in {
    short            sin_family;   // e.g. AF_INET, AF_INET6
    unsigned short   sin_port;     // e.g. htons(3490)
    struct in_addr   sin_addr;     // see struct in_addr, below
    char             sin_zero[8];  // zero this if you want to
};

struct in_addr {
    unsigned long s_addr;          // load with inet_pton()
};

我尝试打印出“udp_server.sin_addr.s_addr”(其中udp_server的类型为struct sockaddr_in)和它打印了一个数字。

我相信s_addr变量转换为网络长?如何将其转换为可读格式以便我确定主机?

2 个答案:

答案 0 :(得分:2)

有许多功能可以将您提到的数字(长格式的网络地址)转换为人类可读的地址。

查看inet_pton()inet_ntop()(演示文稿编号,编号到演示文稿)。那些是特定于AF_INET的,如果我没弄错的话,可以同时使用IPv4和IPv6。

Suerte!

答案 1 :(得分:1)

是的,它是网络字节顺序中的IP地址。使用inet_ntoa(3)inet_ntop(3)获取IP的字符串表示形式。