From: Alexandr Vladykin Date: 2004-03-20T04:06:50+09:00 Subject: Server on Ruby Hello, all! I have joined to this mailing list just now, and I am newbie in Ruby. So, sorry, if my question seemed as very easy, but I can not solve it. Please help me, if possible. Before Ruby I have programmed on Perl, but in some reasons I was have to go to the Ruby. And I have to write a socket server on Ruby. Because I have some examples on Perl, I decided to translate it to Ruby for meeting, how it can be done on Ruby. So, I have a simply echo socket server on Perl: --------------------------------------------------------------------------------------------------------------- #!/usr/bin/perl -wT require 5.002; use strict; use IO::Socket; use IO::Select; # create a socket to listen to a port my $listen = IO::Socket::INET->new(Proto => 'tcp', LocalPort => 2324, Listen => 1, Reuse => 1) or die $!; # to start with, $select contains only the socket we're listening on my $select = IO::Select->new($listen); my @ready; # wait until there's something to do while(@ready = $select->can_read) { my $socket; # handle each socket that's ready for $socket (@ready) { # if the listening socket is ready, accept a new connection if($socket == $listen) { my $new = $listen->accept; $select->add($new); print $new->fileno . ": connected\n"; } else { # otherwise, read a line of text and send it back again my $line=""; $socket->recv($line,80); $line ne "" and $socket->send($line) or do { # either can't send or can't receive, so they must have hung up print $socket->fileno . ": disconnected\n"; $select->remove($socket); $socket->close; }; } } } --------------------------------------------------------------------------------------------------------------- I tryed to translate it into Ruby, but I did not find in Ruby any objects as Perl IO::Select, so how I can handle multiple clients on Ruby as Perl do it with IO::Select? May be there are some any additional documentation about writing socket servers on Ruby? Please, help me. Best regards, Alexandr Vladykin