Hi,
We're having problems with the standard Socket module with Ruby. It has
been alleged that this might be a C Runtime issue. But this seems
unlikely in light of the fact that other ports on the same platform --
notably Perl, and perhaps also Python -- have working sockets, also
implemented on top of the same C Runtime.
Can someone shed some light on what may be going on?
Here is a failing case, as we first reported the problem:
client.rb:
require 'socket'
s=TCPSocket.new("localhost", ARGV[0])
s.puts("test\r\n")
puts s.gets
s.puts("Blah, blah\r\n")
puts s.gets
s.close
server.rb:
require 'socket'
gs = TCPServer.open(0)
printf("server is on port %d\n", gs.addr[1])
s=gs.accept
line = s.gets
puts("Got line: #{line}")
s.puts(line.upcase)
bl = s.gets
puts ("Got str2: #{bl}")
s.puts(bl.upcase)
s.close
On Linux (ruby 1.8.2), this gave the following output, as expected:
(client side)
TEST
BLAH, BLAH
(server side)
server is on port 40050
Got line: test
Got str2: Blah, blah
On OpenVMS (ruby 1.8.1), this surprisingly gave the following output:
(client side)
test
test
(server side)
server is on port 49379
Got line: test
Got str2: test
We tried varying the test by changing our puts to write on the client
side, but the test results were the same on both platforms.
Thanks,
Ben Armstrong
···
--
Ben Armstrong -. Medianet Development Group,
BArmstrong@dymaxion.ca `-. Dymaxion Research Limited
<URL: http://www.dymaxion.ca/> `- Halifax, Nova Scotia, Canada