Ваша проблема с звонком на inet_pton
. Когда AF_INET
является переданным семейством адресов, указатель dst
должен быть указателем на struct in_addr
, а не struct sockaddr_in
.
Изменить строку 21 на:
if (inet_pton(AF_INET, argv[1], &sa.sin_addr) <= 0)
Вставить строку в строку 23:
sa.sin_family = AF_INET;
Изменить строки 31-32 на:
if ((x=getnameinfo((struct sockaddr*)&sa, sizeof sa,
hostname, sizeof hostname, servname, sizeof servname, NI_NAMEREQD)) != 0) {
тогда должно работать.