正确使用getaddrinfo和getnameinfo

 pfshi 发布于 2023-01-14 16:04
  • php
  • 在我的C程序中,我getaddrinfo用来从主机名获取IP地址,并getnameinfo从IP地址获取主机名。这两个功能是互补的。我读到man getaddrinfo我必须使用freeaddrinfo()函数释放为动态分配的链表分配的内存res。因此,我的代码如下所示:

    if ((err = getaddrinfo(argv[1], NULL, &hints, &res)) != 0) {
      printf("error %d\n", err);
      return 1;
    }
    
    addr.s_addr = ((struct sockaddr_in *)(res->ai_addr))->sin_addr.s_addr;
    printf("%s\n", inet_ntoa(addr));
    
    freeaddrinfo(res);
    

    但是因为getnameinfo我看不到任何类似的功能,即freenameinfo

    为什么在使用时我需要释放getaddrinfo而不是释放getnameinfo。为什么我需要完全腾出空间?较早时,我gethostbyaddr不需要释放内存。为什么这不同。

    getaddrinfoover 的优点是gethostbyaddr什么?后者已弃用,仅应使用前者吗?为什么呢

    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有