青山です。
マニュアルにあるサンプルの一部に手を加えたサンプルですが、これに telnet
で接続し、切断すると、Broken pipe で Ruby が終了してしまいます。Ruby
内でこのエラーも捕捉して欲しい(rescue に行って欲しい)ですが、大変でしょ
うか?
#!/usr/local/bin/ruby
require "socket"
gs = TCPserver.open(0)
addr = gs.addr
addr.shift
printf("server is on %d\n", addr.join(":"))
loop do
ns = gs.accept
print(ns, " is accepted\n")
Thread.start do
s = ns # save to dynamic variable
loop do
begin
s.write(".\n") # --> Broken pipe
rescue
break
end
sleep 0.5
end
print(s, " is gone\n")
s.close
end
end
青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>