【问题标题】:IO::Socket::INET returns a empty socketIO::Socket::INET 返回一个空套接字
【发布时间】:2015-02-16 09:49:27
【问题描述】:

这是我的代码:

 my $server_socket = new IO::Socket::INET
            (
                LocalPort => 8378,
                Type      => SOCK_STREAM,
                Listen    => $SOMAXCONN,
                Proto     => 'tcp',
                Reuse     => 1
            ) || die "$!\n";

        $serverName   = $ENV{COMPUTERNAME};
        $socketPortNr = 8378;
        $clientSocket = new IO::Socket::INET (PeerAddr => $serverName,
                                                  PeerPort => $socketPortNr,
                                                  Proto    => 'tcp');

但是$clientSocket 是空的。

$clientSocket 为空的原因可能是什么?

【问题讨论】:

  • 在您的代码中始终使用use warningsuse strict
  • 当我使用 use strict 时,我得到变量初始化错误并且脚本被停止
  • 首先声明所有变量。
  • 相同的脚本在 Windows 7 Ultimate 机器上成功运行。我在 Windows 7 企业版中遇到问题。所以我认为使用 strict 不会有问题。
  • my $sock = IO::Socket::INET->new(...) or die $!$! 会告诉你出了什么问题

标签: ios perl sockets


【解决方案1】:

无需猜测。如其文档中的示例所示,IO::Socket::INET->new 在失败时会在$@ 中放置一条错误消息。

my $client_socket = new IO::Socket::INET->new(
   ...
)
   or die("Can't create client socket: $@\n");

$! 也已设置,尽管它提供的信息并不总是那么准确。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2023-04-03
    相关资源
    最近更新 更多