From: "mitchell" <ffsnoopy / gmail.com>
>
> Unfortunately, I cannot use the send or recv commands because of
> buffering issues with TCP. It has to be gets/puts which is quite
> unfortunate, but I have no other simple workaround.

Hi, could you explain more about what you mean by buffereing issues?

I primarily use send/recv with TCP.  It's not hard to make a 
puts/gets wrapper around send/recv, for instance.


For ex:  (untested, but similar to what i frequently have used)

  def send_string(sock, str)
    begin
      while str.length > 0
        if select(nil, [sock], nil, nil)
          sent = sock.send(str, 0)
          str = str[sent..-1]
        end
      end
    rescue IOError, SystemCallError, SocketError
      # ... set eof flag?
    end
  end

  def puts(sock, str)
    send_string(sock, "#{str}\n")
  end

  sock.fcntl(Fcntl::F_SETFL, sock.fcntl(Fcntl::F_GETFL) | Fcntl::O_NONBLOCK) if defined? Fcntl::O_NONBLOCK

  puts(sock, "hello")


Regards,

Bill