From: Markus Jais Date: 2002-04-05T23:54:14+09:00 Subject: socket question hello lets assume that I have a server on localhost which returns a string. but I have no control about the server and it does not to seem to return somethink like and EOF. my sample client works perfectly in Perl but has a problem in Ruby (and I prefer Ruby, of course) the Perl client: ================ use strict; use IO::Socket; my $socket = IO::Socket::INET->new('localhost:5533') or die "Error: $!\n"; print $socket "create:10027566:drizzt\n"; my $str = <$socket>; print "$str"; close($socket); the Ruby client: ================ require "socket" port = 5533 host = "localhost" t = TCPSocket.new(host, port) t.print("create:10027566:drizzt\n") t.readlines.each do |line| puts line end t.close when I start the clients I get this output: Perl: ===== mjdev:/home/mj/own$ ./tcp-client.pl hello from server mjdev:/home/mj/own$ Ruby: ===== mjdev:/home/mj/own$ ./tcp-client.rb ../tcp-client.rb:10:in `readlines': Interrupt from ./tcp-client.rb:10 As you can see, I interrupted the Ruby client with Ctrl-C because there was no output. I thought that readlines would work as Perls $str = <$socket>. when I write while t.gets puts $_ end I get the output from the client but the Ruby script does not exit. ../tcp-client.rb hello from server ../tcp-client.rb:11:in `gets': Interrupt from ./tcp-client.rb:11 again stopped with Ctrl-C Maybe this is a problem on the server, but I have no control about the server. Any ideas how to improve the Ruby script ?? thanks in advance. Markus