Проблему решил. Всё работает верно, фукнция getservbyname() возвращает структуру, в которой номер порта записан в сетевом порядке следования байт. Чтобы получить то значение, которое стоит в файле /etc/services, нужно к номеру порта в этой структуре применить функцию ntohs().