Розетки POSIX;Расшифровка имени хоста из структуры sockaddr_in - PullRequest
0 голосов
/ 08 октября 2010

Можно ли расшифровать имя хоста с учетом структуры 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 ]

2 голосов
/ 08 октября 2010

Существует ряд функций для преобразования упомянутого вами числа (сетевой адрес в длинном формате) в удобочитаемые адреса.

Взгляните на inet_pton() и inet_ntop() (презентация на номер, номер на презентацию). Они специфичны для AF_INET и работают как для IPv4, так и для IPv6, если я не ошибаюсь.

Суерте!

1 голос
/ 08 октября 2010

Да, это IP-адрес в сетевом порядке байтов.Используйте inet_ntoa(3) или inet_ntop(3), чтобы получить строковое представление IP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...