【问题标题】:Passing a hostname of over 255 characters to getaddrinfo causes a getaddrinfo failed: memory allocation failure why?将超过 255 个字符的主机名传递给 getaddrinfo 会导致 getaddrinfo 失败:内存分配失败,为什么?
【发布时间】:2011-02-24 08:42:31
【问题描述】:

我目前正在升级我们的软件以支持 ipv6,同时我正在将主机名/IP 字段扩展到最大主机名大小。在 sun 文档中,这似乎可以达到 1025(netdb.h:#define NI_MAXHOST 1025 - 这是推荐的主机名分配定义),但是当我将超过 255 的主机名传递给 getaddrinfo 时,我得到“getaddrinfo failed: memory allocation失败”。我在 Sol10 盒子上进行测试。想法?

【问题讨论】:

  • 你能显示你得到错误的代码吗?
  • 它是否适用于较小的主机名?
  • 看起来像一般的 Sol10 限制,主机名也被限制短,chihungchan.blogspot.com/2008/01/…

标签: c unix network-programming ipv6


【解决方案1】:

NI_MAXHOST 用于 getnameinfo(),getaddrinfo() 使用 MAXHOSTNAMELEN。 (见here),这似乎是硬编码的——而且你几乎无能为力。

我不知道这些不同的确切原因,但请参见例如还有here/here 了解有关最大主机名长度的一些信息。

【讨论】:

    【解决方案2】:

    您别无选择:255 个字符的限制是标准。让我引用RFC 1123,第 2.1 节:

    主机软件必须处理最多 63 个字符的主机名,并且 应处理最多 255 个字符的主机名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多