Какой это правильный тип / формат для второго аргумента для inet_ntop? - PullRequest
1 голос
/ 27 августа 2010

Раньше я думал, что второй аргумент для inet_ntop всегда должен быть struct in_addr или struct in6_addr.Но потом я посмотрел определение POSIX :

const char *inet_ntop(int af, const void *restrict src,
                      char *restrict dst, socklen_t size);

[...] Аргумент src указывает на буфер, содержащий адрес IPv4, еслиаргумент af - AF_INET, или IPv6-адрес, если аргумент af - AF_INET6;адрес должен быть в сетевом порядке байтов.[...]

Как видите, как прототип функции, так и описание являются расплывчатыми.

Почему это?А какие разрешены / портативные варианты для src?

1 Ответ

1 голос
/ 27 августа 2010

Это указатель на IPv4 или IPv6, сохраненный в соответствующих заголовках - таким образом, 4-байтовый буфер в случае IPv4 и 16-байтовый буфер в случае IPv6.

struct in_addr и struct in6_addr - это удобные структуры для хранения таких адресов, но вы можете использовать unsigned char [4] и unsigned char [16] соответственно, если хотите.

...