我编写了一个脚本,通过IPv6链路本地IP发送UDP数据包。 源和目标都是IPv6链路本地IP。
#!/usr/bin/perl
use IO::Socket::INET6;
use Socket6;
my ($socket,$data);
$socket = new IO::Socket::INET6(
LocalAddr => 'fe80::21b:21ff:fe39:8cce',
LocalPort => '547',
PeerAddr => 'fe80::240:43ff:feb9:2f44',
PeerPort => '546',
Proto => 'udp',
) or die "ERROR in Socket Creation : $@\n";
for (my $i=1; $i <= 1; $i++) {
$data =pack('H*',"123455550");
$socket->send($data);
}
$socket->close();
执行上述脚本后,我收到以下错误:
ERROR in Socket Creation : IO::Socket::INET6: bind: Invalid argument
任何人请帮助我。
答案 0 :(得分:0)
我感觉这是失败的,因为您使用的是本地链接,但未在LocalAddr
字符串中指定接口。以下似乎对我有用:
LocalAddr => "fe80::a00:27ff:fe49:51ce%eth0",
PeerAddr => "fe80::a00:27ff:fe49:51ce",
PeerPort => 22,
Proto => 'tcp',
答案 1 :(得分:0)
您也不想使用Socket6
或IO::Socket::INET6
,因为它们都已经过时了#34;过渡&#34;在核心的Socket
支持&#v; 6本地之前,在IPv6中很早就写好了。现在它做得很好,你应该坚持常规Socket
和IO::Socket::IP
。
(通过免责声明:我是两者的维护者)