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

本文通过两个C语言示例程序演示了如何使用gethostbyaddr、gethostbyname、getservbyname及getservbyport函数来查询网络服务信息。第一个程序展示了如何获取指定IP地址对应的主机名及其别名,并列举所有相关地址;第二个程序则展示了如何通过端口号查找对应的服务名称及协议。

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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值