int gethostbyname_r(const char *name, struct hostent *result, char *buffer, size_t buflen, struct hostent **resultptr, int *h_errnop); ``` 返回值说明: - 如果函数调用成功,则返回0; - 如果函数调用失败,则返回对应的错误编号。 参数name:需要获取的主机名。 参数result:存储获取到的主机信息。
返回值 如果成功,函数返回 0;如果不成功,函数返回-1。 注意: gethostbyname子例程的返回值指向被后续调用覆盖的静态数据。 必须在每次调用时复制此数据以保存以供后续调用使用。gethostbyname_r子例程解决此问题。 如果Name参数是 IP 地址,那么此子例程将搜索具有该 IP 地址作为名称的机器。 因此,如果Name参数是 IP ...
使用gethostbyname_r得到dns信息 在使用前需要看看所使用系统是否有这个函数 在网络开发中 经常出现需要从主机名得到ip地址的情况 这时就使用gethostbyname 但是因为gethostbyname返回的是一个指向静态变量的指针 不可重入 很可能刚要读时值就被其它线程修改 所以 新的posix中增加了另一个可重入的从主机名(域名)得到DNS的...
问题 调用gethostbyname_r解析域名时,当域名为某个非有效域名时,导致程序段错误,分析发现gethostbyname_r当参数为非有效域名时也返回成功,但是host却是NULL,导致后面使用host时导致引用空指针错误。 所以使用gethostbyname_r时,除了判断返回值外,还需要判断host是否为NULL,并且获取错误信息的函数是hstrerror,而不是perror或...
printf("official hostname: %s\n", hptr->h_name);for(pptr = hptr->h_aliases; *pptr != NULL; pptr++) { printf("\talias: %s\n", *pptr); }switch(hptr->h_addrtype) {caseAF_INET: { pptr= hptr->h_addr_list;for( ; *pptr != NULL; pptr++) { ...
谢谢了关于gethostbyname_r的返回值 man手册是这么说的 /* GNU extensions */ struct hostent *gethostbyname2(const char *name, int af); int gethostbyname_r (const char *name, struct hostent *ret, char *buf, size_t buflen, struct hostent **result, int *h_errnop); int gethostbyname2_r ...
if((*(pptr=hptr->h_aliases))!=NULL){ printf("alias hostname:"); for(;*pptr!=NULL;pptr++) printf("%s\t",*pptr); printf("\n"); } switch(hptr->h_addrtype) { caseAF_INET: printf("ip type:AF_INET\n"); printf("ip length:%d\n",hptr->h_length); ...
gethostbyname()返回:A.结构体指针 HOSTENTB.结构体指针 SOCKADDRC.结构体指针 SOCKADDR_IND.一个字符串格式的 IP 地址的答案是什么.用刷刷题APP,拍照搜索答疑.刷刷题(shuashuati.com)是专业的大学职业搜题找答案,刷题练习的工具.一键将文档转化为在线题库手机刷题,以提高
=NULL; pptr++) { printf("\ttalias: %s\n", *pptr); //输出主机的别名 } //输出ip地址 switch (hptr->h_addrtype) { case AF_INET: for (pptr=hptr->h_addr_list; *pptr!=NULL; pptr++) { printf("\taddress: %s\n", inet_ntop(hptr->h_addrtype, *pptr, str, sizeof(str))...