B
Brad
All:
I've run into a problem that I'm hoping is not unique.
I am learning TCP/IP programming in Ruby and the
following code generates a strange result:
# CLIENT.RB
# =========
require 'socket'
s=TCPSocket.new("localhost", ARGV[0])
s.write("test\n")
puts s.gets
# 2nd read required to retrieve
# modified string from server.
# 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
puts s.gets
s.write(s.gets.upcase)
s.close
The preceeding code is used to run a server that accepts a
single client. The client sends the server a string, the
server reads and converts the string to uppercase and then
sends it back to the client.
That's how it's supposed to work and on the PC it does work.
However, on OpenVMS the client requires two, consecutive reads
in order to get the uppercased value from the server (i.e. first
read returns the original string "test"; second read returns the
modified string sent back by the server "TEST"). This leads me
to believe it's an internal buffer problem. Before I speculate
further I wanted to ask if anyone has come across this before and
what may be the cause of it.
Regards,
Brad
(e-mail address removed)
I've run into a problem that I'm hoping is not unique.
I am learning TCP/IP programming in Ruby and the
following code generates a strange result:
# CLIENT.RB
# =========
require 'socket'
s=TCPSocket.new("localhost", ARGV[0])
s.write("test\n")
puts s.gets
# 2nd read required to retrieve
# modified string from server.
# 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
puts s.gets
s.write(s.gets.upcase)
s.close
The preceeding code is used to run a server that accepts a
single client. The client sends the server a string, the
server reads and converts the string to uppercase and then
sends it back to the client.
That's how it's supposed to work and on the PC it does work.
However, on OpenVMS the client requires two, consecutive reads
in order to get the uppercased value from the server (i.e. first
read returns the original string "test"; second read returns the
modified string sent back by the server "TEST"). This leads me
to believe it's an internal buffer problem. Before I speculate
further I wanted to ask if anyone has come across this before and
what may be the cause of it.
Regards,
Brad
(e-mail address removed)