使用IO :: Socket :: IP ???如何在perl Ipv6中创建一个客户端

时间:2013-06-04 00:52:16

标签: perl client ipv6

我一直在努力寻找一个简单的客户端ipv6脚本 这可以与Evens服务器脚本一起使用,当然我 不知道我在做什么,所以我能做的就是重写一个人 别的工作,直到我知道我在做什么...

所以这是一个适用于Microsoft widows服务器的服务器脚本

   use IO::Socket::IP -register; 
   my $sock = IO::Socket->new(
   Domain    => PF_INET6,
   LocalHost => "::1",
   Listen    => 1,
   ) or die "Cannot create socket - $@\n";

   print "Created a socket of type " . ref($sock) . "\n";

   {
   $in = <STDIN>;
   print $in->$sock;
   redo }

当然$ in-&gt; $ sock无效,因为我不知道如何发送 使用$ sock的数据??? 所以我需要知道如何正确发送信息和 我需要的是一个连接上述脚本的客户端脚本 使用ipv6协议

任何人都可以帮忙吗??? 我希望能够从一个发送信息 使用这个perl程序到另一个perl程序 能够来回发送信息会 是理想的......

提前致谢 -Mark

1 个答案:

答案 0 :(得分:1)

这是服务器套接字(Listen => 1),因此您必须accept建立连接。

use IO::Socket::IP -register;

my $listen_sock = IO::Socket::IP->new(
   LocalHost => "::1",                    # bind()
   Listen    => 1,                        # listen()
) or die "Cannot create socket - $@\n";

print("Listening to ".$listen_sock->sockhost()." "
                     .$listen_sock->sockport()."\n");

while (1) {
   my $sock = $listen_sock->accept()
      or die $!;

   print("Connection received from ".$sock->peerhost()." "
                                    .$sock->peerport()."\n");

   while (<$sock>) {
      print $sock "echo: $_";
   }
}

客户:

use IO::Socket::IP -register;

@ARGV == 2 or die("usage");
my ($host, $port) = @ARGV;

my $sock = IO::Socket::IP->new(
   PeerHost => $host,                     # \ bind()
   PeerPort => $port,                     # /
) or die "Cannot create socket - $@\n";

print $sock "Hello, world!\n";
$sock->shutdown(1);                       # Done writing.
print while <$sock>;

注释表示用于执行操作的基础系统调用。