#!/usr/local/bin/ruby
# -*- mode: ruby -*-
# $Id: echo.ruby,v 1.3 2001/05/08 08:08:41 doug Exp $
# http://www.bagley.org/~doug/shootout/
require "socket"
DATA = "Hello there sailor\n"
def echo_client(n, port)
sock = TCPsocket.open('127.0.0.1', port)
n.times do
sock.write(DATA)
ans = sock.readline
if ans != DATA then
raise sprintf("client: \"%s\" \"%s\"", DATA, ans)
end
end
sock.close
end
def echo_server(n)
ssock = TCPserver.open('127.0.0.1', 0)
port = ssock.addr[1]
if pid = fork then
# parent is server
csock = ssock.accept
n = 0
while str = csock.gets
n += csock.write(str)
end
Process.wait
printf "server processed %d bytes\n", n
else
# child is client
echo_client(n, port)
end
end
echo_server(Integer(ARGV.shift || 1))