【问题标题】:inet_pton is not a valid Socket macroinet_pton 不是有效的 Socket 宏
【发布时间】:2016-03-18 13:12:57
【问题描述】:

我在使用 perl 包 5.10 时遇到错误。

“inet_pton 不是有效的 Socket 宏”

if (Socket::inet_pton (AF_INET6,$self->{'ip'}) )
  {

    $log->print("we hit here and ip=$self->{'ip'}");
     $self->{'session'} = Net::SNMP->session(-hostname =>   $self->{'ip'},
                                             -community =>  $self->{'community'},
                                             -port =>       $self->{'port'},
                                             -version =>    'snmpv2c');
  }

你能告诉我根本原因吗?

【问题讨论】:

  • @Martin - 不,这是 Linux 机器

标签: perl sockets snmp ipv6


【解决方案1】:

Socket 使用自动加载器。这就是当您尝试调用不存在的 sub 时它产生的消息。

$ perl -MSocket -wE'my $x = Socket::some_name()'
some_name is not a valid Socket macro at -e line 1

换句话说,错误信息是

的同义词
Undefined subroutine &Socket::inet_pton called

您的 Socket 版本必须早于添加模块对 inet_pton 的支持。因此,修复只是升级该模块。

【讨论】:

  • 谢谢!你知道同一 perl 版本上的 IPv6 的任何替代实用程序吗?
  • 较新的 Socket 应该可以在您现有的 Perl 版本上正常工作
  • Net::IP::ip_expand_address 是否会和 inet_pton 做同样的工作?
【解决方案2】:

你的 Perl 太旧了。据我所知,inet_pton 支持直到 5.12 才添加。从 CPAN 安装更新版本的 Socket 可能会有所帮助,但我不会打赌。 Perl 5.10 于 2007 年问世,当时对 IPv6 的支持比现在差很多。

【讨论】:

  • Perl 的版本与此无关,2007 年的情况也与此无关。
  • 谢谢!你知道 inet_pton(IPv6) 在同一 perl 版本上的任何替代实用程序吗
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-19
  • 2019-11-18
  • 1970-01-01
  • 2011-04-24
  • 1970-01-01
  • 2013-03-17
相关资源
最近更新 更多