Linux下gethostbyname_h_addr_list

1 篇文章 0 订阅
1 篇文章 0 订阅





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


//linux
#include<netdb.h>
struct hostent *  gethostbyname(const char*hostname);
error:return NULL and set  h_errno


//compile:gcc gethostbyname.c
//run:./a.out
#include<stdio.h>
#include<netdb.h>
#include<unistd.h>
#include<string.h>
int main(int argc,char* argv[])
{
    char ret_hostname[65];
    gethostname(ret_hostname,sizeof(ret_hostname));;//#include<unistd.h>
    printf("by gethostname() get hostname:%s\n",ret_hostname);
    
    struct hostent *ret_hostent;
 ret_hostent=gethostbyname(ret_hostname);
 printf("h_name %s\nh_aliases %s\nh_addrtype %d\nh_length %d\nh_addr_list %s\n",
               ret_hostent->h_name,         
                               *(ret_hostent->h_aliases),
                                             ret_hostent->h_addrtype,
                                                          ret_hostent->h_length,
                                                                          *(ret_hostent->h_addr_list+1));
printf("sizeof(h_addr_list[0]) is %lu\n",sizeof(ret_hostent->h_addr_list[0]));//long unsigned int
printf("strlen(h_addr_list[0]) is %zu\n",strlen(ret_hostent->h_addr_list[0]));//size_t
//type:  int   char   char*     unsigned int       long unsigned int      size_t   float   double    long int   
//format:%d    %c      %s        %u                   %lu                  %zu     %f       %lf       %ld

printf("%d %d %d %d\n",ret_hostent->h_addr_list[0][0]&0xFF,ret_hostent->h_addr_list[0][1]&0xFF,ret_hostent->h_addr_list[0][2]&0xFF,
               ret_hostent->h_addr_list[0][3]&0xFF);//big_endian
return 0;}

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

//linux
#include<netdb.h>
struct hostent *  gethostbyname(const char*hostname);
error:return NULL and set  h_errno
*/


out in screen 屏幕打印
ubuntu@linuxc_easy:~/linuxc_easy/pcdtest$ gcc gethostbyname.c                                                                                                             
ubuntu@linuxc_easy:~/linuxc_easy/pcdtest$ ./a.out                                                                                                                         
by gethostname() get hostname:linuxc_easy                                                                                                                                 
h_name linuxc_easy                                                                                                                                                        
h_aliases (null)                                                                                                                                                          
h_addrtype 2                                                                                                                                                              
h_length 4                                                                                                                                                                
h_addr_list (null)                                                                                                                                                        
sizeof(h_addr_list[0]) is 8                                                                                                                                               
strlen(h_addr_list[0]) is 2                                                                                                                                               
172 17 0 4    


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值