hint.ai_protocol = 0; /* if set to 0, 3 addrinfos will be returned */ hint.ai_socktype = SOCK_STREAM; /* must be set to 0 or NULL */ hint.ai_addrlen = 0; hint.ai_addr = NULL; hint.ai_canonname = NULL; hint.ai_next = NULL; error = getaddrinfo(argv[1], NULL, &hint, &result); if (error != 0) { fprintf(stderr, "error in getaddrinfo: %s\n", gai_strerror(error)); return 1; /* loop over all returned results and do inverse lookup */ for (res = result; res != NULL; res = res->ai_next) { char hostname[NI_MAXHOST] = ""; error = getnameinfo(res->ai_addr, res->ai_addrlen, hostname, NI_MAXHOST, NULL, 0, 0); if (error != 0) { fprintf(stderr, "error in getnameinfo: %s\n", gai_strerror(error)); continue; if (*hostname) { printf("hostname: %s\n", hostname); freeaddrinfo(result); return 0;
使用gethostbyname函数, 报错如下: Use get add r info () or Get Add r Info W() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings XXX 打开项目属性,编辑预处理器定义,增加_WINSOCK_DEPRECATED_NO_...
当我们使用vs进行网络编程时出现 error C4996: ‘gethostbyname’: Use get add r info () or Get Add r Info W() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings 1>d:\windows kits\10\include\...
错误提示用get add r info () or Get Add r Info W()函数代替gethostbyname函数,用inet_ntop() or InetNtop()代替inet_ntoa,若不用 上述函数代替原有函数的解决方法为“打开“项目”-->“属性”-->“配置属性”-->"C/C++"-->"预处理器"--&gt...
#define _GNU_SOURCE /* To get defns of NI_MAXSERV and NI_MAXHOST */ #include <arpa/inet.h> #include <sys/ socket .h> #include <netdb.h> #include <if add rs.h> #include <...
主要是如何使用两个函数的返回结构。在gethostbyname函数中,返回hostent,linux参考手册介绍如下:struct hostent { char *h_name; /* official name of host */ char **h_aliases; /* alias list */ int h_ add rtyp
sock add r_in clientService; clientService.sin_family = AF_INET; clientService.sin_ add r.s_ add r = inet_ add r("10.224.5.27"); clientService.sin_port = htons(7008); 1. 网络环境中服务器需要一个唯一的IP地址和一个主机名(域名),大多数情况,我们知道域名,而不会去记住IP, 基于此需要进行域名到IP的转换 2.get add r info 函数,将一个主机名和一个服务器名映射到一个地址.注意这两个名字必须再DNS服务器中注册过, 第三个参数是一个地址过滤模板,通常情况下不过滤,NULL,第4个参数为可用的通信地址信息结构列表. #include <sys/ 其中参数name是一个指向用于存储主机名的缓冲区的指针,len是该缓冲区的大小。如果函数调用成功,它将主机名存储在缓冲区中,并返回0;如果失败,则返回-1,并设置errno变量。 get add r info 函数是获取一个主机名或服务名对应的IP地址和端口号的函数,它的原型如下: int get add r info (const char *node, const char *service, const struct add r info *hints, struct add r info **res); 其中node参数是主机名或IP地址,service参数是服务名或端口号,hints参数是一个 add r info 结构体指针,用于指定一些选项和限制条件,res参数是一个指向 add r info 结构体链表的指针,用于存储获取到的结果。 如果函数调用成功,它将返回0,并将获取到的结果存储在res指针所指向的链表中;如果失败,则返回一个非零错误码,并设置errno变量。在使用完结果后,应该调用free add r info 函数释放所分配的内存。