From: Pito Salas Date: 2010-05-13T01:45:36+09:00 Subject: TcpIp, Sockets, Gserver question I'm writing a simple pair of client and server apps to demonstrate a concept and it's doing something weird. I will show the source code below but basically there seems to be a syncing problem or a cache flushing problem. When text is sent from the client to the server it doesn't seem to receive it in one shot, or vice versa when the server responds the client doesn't see it when I expect, and as a result, things get out of sync in weird ways. Again I think it's some kind of cache flushing problem. I hope someone on this list has tried something like this and might be able to help me explain what's going on. Thanks a lot for taking a look. I hope it's something really simple like some flag or setting somewhere. Thanks!! Pito Here's the problem code reduced to a simple test case: CLIENT: require 'socket' tcp_socket = TCPSocket.new('0.0.0.0', 8888) tcp_socket.puts "Hi there server" servers_resp = tcp_socket.gets.chomp puts servers_resp loop do print "> " command_string = gets break if command_string =~ /x/ tcp_socket.puts command_string servers_resp = tcp_socket.gets.chomp puts servers_resp end SERVER: require 'gserver' class MyServer < GServer def serve(io_object) # Increment the client ID so each client gets a unique ID io_object.sync = true io_object.puts("Welcome to the server") puts "client attached." loop do line = io_object.readline case line when /^t/ io_object.puts "The time of day is #{Time.now}" when /^x/ puts "Exiting!" break when /^f/ else puts "received line #{line}" io_object.puts "What does #{line} mean, anyway?" end end end end puts "Starting to listen for a connection on port 8888" server = MyServer.new(8888) server.start server.join SHELL TRANSCRIPT ON SERVER SIDE: ruby deleteme.rb Starting to listen for a connection on port 8888 client attached. received line Hi there server received line lalal received line dadad received line wowowow received line received line received line received line received line received line received line received line received line AND ON THE CLIENT SIDE: $ ruby myclient.rb Welcome to the server > lalal What does Hi there server > dadad mean, anyway? > wowowow What does lalal > mean, anyway? > What does dadad > mean, anyway? > What does wowowow > mean, anyway? > What does > mean, anyway? > What does > mean, anyway? > -- Posted via http://www.ruby-forum.com/.