getservbynameの使い方

サンプルソース (getservbyname_sample.c)

#include <stdio.h>
#include <netdb.h>  /* getservbyname() */

int main(int argc, char **argv)
{
  struct servent *n;

  if(argc == 1) {
    printf("usage: %s protocol_name\n", argv[0]);
    return 1;
  }

  if((n = getservbyname(argv[1], "tcp")) == NULL) {
    printf("%s is unknown.\n", argv[1]);
  } else {
    printf("s_name = %s\n", n->s_name);
    printf("s_port = %d\n", htons(n->s_port));
  }
  
  return 0;
}

コンパイル方法

$ gcc -o getservbyname_sample ./getservbyname_sample.c

実行方法

引数にプロトコルを入れると、名称とポート番号が表示されます。

% ./gethostbyname_sample http                  
s_name = www
s_port = 80

% ./gethostbyname_sample ftp                   
s_name = ftp
s_port = 21

% ./gethostbyname_sample ssh                   
s_name = ssh
s_port = 22

% ./gethostbyname_sample pop                   
pop is unknown.

% ./gethostbyname_sample pop3
s_name = pop3
s_port = 110

% ./gethostbyname_sample imap                  
s_name = imap2
s_port = 143

参考

  • man getservbyname