0

私はEvensサーバースクリプトで動作する単純なクライアントipv6スクリプトを見つけようとしていますが、もちろん私が何をしているのかわかりません。

これは、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->$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 に答える