0

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

所以这是一个在微软寡妇服务器上工作的服务器脚本

   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->$sock 不起作用,因为我不知道如何仅使用 $sock 发送数据?所以我需要知道如何正确发送信息,
我需要的是一个使用 ipv6 协议连接到上述脚本的客户端脚本

有人能帮忙吗 ???我希望能够将信息从一个 perl 程序发送到另一个 perl 程序,使用这个能够来回发送信息将是理想的......

在此先感谢-马克

4

1 回答 1

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>;

注释指示用于执行操作的底层系统调用。

于 2013-06-04T02:10:58.733 回答