现在的位置: 首页 > 综合 > 正文

《UNIX网络编程01》 第九章 基本名字与地址转换 gethostbyname、gethostbyaddr、uname

2018年10月07日 ⁄ 综合 ⁄ 共 973字 ⁄ 字号 评论关闭

gethostbyname、gethostbyaddr、uname

#include<unistd.h>
#include<netdb.h>
#include<sys/utsname.h>


int main()
{
	struct hostent *pHost = NULL;

	in_addr_t addr = inet_addr("127.0.0.1");
	pHost = gethostbyaddr((char*)&addr,4,AF_INET);

	//struct utsname Name;
	//uname(&Name);
	//pHost = gethostbyname(Name.nodename);
	
	printf("name:%s\n",pHost->h_name);
	
	char **pAliases = pHost->h_aliases;
	for(; NULL != *pAliases; pAliases++)
		printf("aliases:%s\n",*pAliases);
	
	char **pAddrlist = NULL;
	switch(pHost->h_addrtype)
	{
	case AF_INET:
	case AF_INET6:
		pAddrlist = pHost->h_addr_list;
		for(; NULL != *pAddrlist; pAddrlist++)
			printf("address:%s\n",*pAddrlist);
		
		printf("first address:%s\n",pHost->h_addr);
		break;
	default:
		printf("unknown type\n");
		break;
	}
	
	return 0;
}

getservbyname、getservbyport


#include<unistd.h>
#include<netdb.h>

int main()
{
	struct servent *pServ = NULL;
	//pServ = getservbyname("telnet","tcp");
	pServ = getservbyport(htons(21),"tcp");
	
	printf("s_name:%s\n",pServ->s_name);
	printf("s_port:%d\n",ntohs(pServ->s_port));
	printf("s_proto:%s\n",pServ->s_proto);
	
	return 0;
}

抱歉!评论已关闭.