赞
踩
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
- */
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。