我遇到了来自第251行或附近的IO / Socket.pm的问题。
croak 'send: Cannot determine peer address'
unless($peer);
基本上我们正在打开连接并向其发送数据。出于某种原因,10-20秒后会抛出此错误。
发送:无法确定对等地址
任何想法??
#!/usr/bin/perl
package Dialer;
use Data::Dumper;
use IO::Socket;
$sock = IO::Socket::INET->new(PeerAddr => '255.255.255.255',
PeerPort => '5038',
Proto => 'tcp');
$res = $sock->send("Action: Login\r\nUsername: dunzo\r\nSecret: 123456789\r\nEvents: \r\n\r\n");
sleep(5);
while(1==1) {
$res = $sock->send("Action: Originate\r\nChannel: Local/123123@dunzodial\r\nExten: 123123\r\nContext: dunzo\r\nTimeout: 60000\r\nVariable: \r\nAsync: yes\r\nCallerID:
1234567890\r\nPriority: 1\r\n\r\n");
$incr++;
sleep(1);
print $incr."\n";
}
答案 0 :(得分:0)
$sock = IO::Socket::INET->new(PeerAddr => '255.255.255.255',
PeerPort => '5038',
Proto => 'tcp');
对于TCP协议,255.255.255.255
不是有效的单播IP地址。在这种情况下,IO :: Socket :: INET将255.255.255.255
视为域名。它将通过查询主机名为255.255.255.255
的DNS服务器来请求IP地址。显然没有这样的记录,DNS查询操作会超时。这就是你在10~20秒后出错的原因。