Ruby Programming/Reference/Objects/IO
The IO class is basically an abstract class that provides methods to use on streams (for example, open files, or open sockets).
Basically, you can call several different things on it.
Encoding
editNote that with 1.9, each call will return you a String with an encoding set, based on either how the connection was established, ex:
a = File.new('some filename', 'rb:ASCII-8BIT') # strings from this will be read in as ASCII-8BIT b = File.new('some filename', 'r') # strings from this will be read in as whatever the Encoding.default_external is # you can change what the encoding will be a.set_encoding "UTF-8" # from now on it will read in UTF-8
gets
editgets
reads exactly one line, or up to the end of the file/stream (and includes the trailing newline, if one was given). A blocking call.
recv
editrecv(1024)
reads up to at most 1024 bytes and returns your the String. A blocking call. Reads "" if a socket has been closed gracefully from the other end. It also has non blocking companions.
read
editread
reads up to the end of the file or up to when the socket is closed. Returns any number of bytes. Blocking.
For information on how to avoid blocking, see Socket.