【问题标题】:inet_ntoa() and Windows User Permissionsinet_ntoa() 和 Windows 用户权限
【发布时间】:2011-02-10 19:52:24
【问题描述】:

是否仍然可以使用 inet_ntoa() 而不必担心 Windows 用户权限?如果用户权限阻止我获取接口的 IP 地址,我是否需要在 inet_ntoa() 周围放置一个 try/catch 块来捕获任何可能的问题?

【问题讨论】:

    标签: c++ c winsock


    【解决方案1】:

    inet_ntoa 不会引发异常。如果出现错误,它会返回NULL

    很难看出用户权限是如何进入这个函数的,因为它只是一个整数到字符串的转换。

    【讨论】:

      【解决方案2】:

      inet_ntoa 的 MSDN 文档指出:

      如果没有发生错误,inet_ntoa 返回 指向静态缓冲区的字符指针 包含文本地址 标准的“。”符号。否则,它 返回 NULL。

      在 Windows Vista 及更高版本上,RtlIpv4AddressToString 函数可用于将表示为 IN_ADDR 结构的 IPv4 地址转换为 Internet 标准点分十进制表示法的 IPv4 地址的字符串表示。

      【讨论】:

      • RtlIpv4AddressToString 的优点是您不需要处理 Winsock 初始化/终止,但它不能在 XP 上运行这一事实使其吸引力降低。
      • @David:虽然它是一个简单的字符串转换,但可能(也许)vista UAC 与此有关..否则为什么需要具有相同功能的单独函数..
      • UAC 与此无关。您可以在调试器下运行 inet_ntoa 并亲自查看。
      猜你喜欢
      • 2013-01-21
      • 1970-01-01
      • 1970-01-01
      • 2017-05-05
      • 2016-09-01
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多