I need to write a program similar to a telnet server. A telnet server
asynchronously reads data from a socket and writes it to a
sub-process, and asynchronously reads data from the subprocess and
writes to a socket. My program needs to replace the subprocess with a
serial port.

The telnet server cannot anticipate when data will arrive from the
socket. Neither can it anticipate when data will arrive from the
subprocess. 

How can I write a similar OS vendor neutral program using ruby,
except, instead reading and writing to a process, I read and write to
serial port? Can I do this with a single thread? How do I read and
write to a serial port? Can anyone point me to some sample code for
serial port I/O? 

  Thanks,
     Siegfried