gethostbyname示例

#include <netdb.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>

const int inet_addrstrlen=16;

int main(int argc, char **argv) {
	char *ptr, **pptr;
	char str[inet_addrstrlen];
	struct hostent *hptr;

	while(--argc>0) {
		ptr=*++argv;
		if((hptr=gethostbyname(ptr)) == NULL) {
			fprintf(stderr, "gethostbyname error for host: %s: %s\n", ptr, hstrerror(h_errno));
			continue;
		}
		printf("official hostname: %s\n", hptr->h_name);

		for(pptr=hptr->h_aliases; *pptr!=NULL; pptr++) {
			printf("\talias: %s\n", *pptr);
		}

		switch(hptr->h_addrtype) {
		case AF_INET:
			pptr=hptr->h_addr_list;
			for(;*pptr!=NULL;pptr++) {
				printf("\taddress: %s\n", inet_ntop(hptr->h_addrtype, *pptr, str, sizeof(str)));
			}
			break;
		default:
			fprintf(stderr, "unknown address type\n");
			break;
		}
	}
	exit(0);
}

  

posted @ 2022-09-15 23:49  东宫得臣  阅读(24)  评论(0编辑  收藏  举报