Hi All,
In this commonly used example I don't get something... Why does it always echo the local ip address, even when people connected from other systems are talking? So if ip [1.2.3.4] talks it still echo's [5.6.7.8] instaid of [1.2.3.4] I don't get that? In this example you can never see who's talking cause it always uses the IP of the system that you are on... #!/usr/bin/perl use IO::Socket; use IO::Select; $max_clients = 10; $port = 56789; $new_client = IO::Socket::INET->new(Proto=>"tcp", LocalPort=>$port, Listen=>$max_clients, Reuse=>1); # create a new selection and add our basic socket for incoming connections $sel = IO::Select->new($new_client); while (@ready = $sel->can_read) { # for every readable socket foreach $client (@ready) { # check if it is the basic socket if ($client == $new_client) { # if it is establish new connection $add = $client->accept; # print status to new user $count = $sel->count; print $add "--- $count users(s) online ---\n"; # add new socket to the selection $sel->add($add); # if it is a already established connection } else { # get the message $message = <$client>; # remove last newline characters chop($message); chop($message); if ($message =~ /^\./) { if ($message eq ".quit") { # remove him from selection $sel->remove($client); # close his socket close $client; } elsif ($message eq ".version") { print $client "*** version 1.0 Beta ***\n"; } else { print $client "*** commands are: .version .quit ***)\n"; } } else { # send the message to all users foreach ($sel->can_write) { print $_ "[".$_->peerhost."] ".$message."\n" } } } } } - Marco van Kammen Springer Science+Business Media System Manager & Postmaster - van Godewijckstraat 30 | 3311 GX Office Number: 05E21 Dordrecht | The Netherlands - tel +31(78)6576446 fax +31(78)6576302 - www.springeronline.com <http://www.springeronline.com> www.springer.com <http://www.springer.com/> -