Попробуйте что-то вроде этого:
#include <netdb.h>
char servname[50];
struct addrinfo *ai;
getaddrinfo(0, "22", 0, &ai);
getnameinfo(ai->ai_addr, ai->ai_addrlen, 0, 0, servname, sizeof servname, 0);
freeaddrinfo(ai);
Примечание. Этот код неполон.Вам следует проверить наличие ошибок, и если ваш номер порта изначально является целым числом, а не строкой, вы можете использовать snprintf
, чтобы сделать десятичную строку для передачи getaddrinfo
.
В отличие от старого getservbyport()
интерфейс, решение, которое я дал, является поточно-ориентированным и чистым для вызова из кода библиотеки.