MUD游戏编程 完成DNS查找

完成DNS查找

1、DNS查找

下面是gethostbyname函数,它执行DNS查找:

struct hostent* gethostbyname( const char* name );


hostent结构体原型如下:

struct hostent {
  char*    h_name;
  char**   h_aliases;
  short    h_addrtype;
  short    h_length;
  char**   h_addr_list;
};


示例:

struct hostent* host;
host = gethostbyname( "www.google.com" );
unsigned long addr = *((unsigned long*)host->h_addr_list[0]);

最后一行也可以用:

unsigned long addr = *((unsigned long*)host->h_addr);


2、DNS逆向查找

使用gethostbyaddr()函数可以完成这一任务

struct hostent* gethostbyaddr( const char* addr, int len, int type );

第一个参数是char型指针,而不是unsigned long型指针。这样做是为了确保灵活性,以便函数可以不是任何指定类型的地址。

第二个参数是地址类型,因为使用的是IPV4,所以它的值也是4。


示例:

unsigned long address = inet_addr( "216.239.33.100" );
struct hostent* host;
host = gethostbyaddr( (char*)&address, 4, AF_INET );

Sockets API拥有并管理hostent结构,这就意味着这些结构可能在未预先通知的情况下被覆盖,因此应该立即复制这些结构中所需的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值