#!/usr/local/bin/perl # $Id: echo-server-select-io-socket.pl,v 1.1 2001/04/21 18:56:41 68user Exp $ use IO::Socket; # IO::Socket モジュールを使う。 use IO::Select; $port = shift || 5000; # ポート番号を設定 $listening_socket = IO::Socket::INET->new(LocalPort => $port, Listen => SOMAXCONN, Proto => 'tcp', Reuse => 1, ); if ( ! $listening_socket ){ die "listen できませんでした。 $!\n"; } $selecter = IO::Select->new; $selecter->add($listening_socket); while (1){ ($active_socks) = IO::Select->select($selecter,undef,undef,undef); foreach $sock (@{$active_socks}){ if ( $sock == $listening_socket ){ print "NEW CLIENT\n"; $new_sock = $listening_socket->accept; $selecter->add($new_sock); } else { print "NEW MESSSAGE\n"; $buf = <$sock>; if ( $buf ){ print $sock $buf; $sock->flush(); } else { $selecter->remove($sock); $sock->close(); } } } }