TCPサーバ(acceptした相手の確認)
TCPサーバは接続準備(listen)をした後にクライアントからのコネクションをacceptしますが、どのクライアントからのコネクションをacceptしたかを知りたい場合があると思います。 ここでは、接続相手を確認する方法を説明します。
acceptした相手を表示するサンプル
acceptした相手に関する情報は「addr」に含まれています。 下記サンプルでは、accept後に「p sock.peeraddr」で接続相手に関する情報を表示しています。
#!/usr/bin/ruby
require "socket"
s0 = TCPServer.open(20000)
while true
sock = s0.accept
# 接続相手の情報を表示する
p sock.peeraddr
# クライアントからのデータを全て受け取る
while buf = sock.gets
p buf
end
sock.close
end
s0.close
上記サンプルコードは、TCPで接続してくる相手に関する情報を表示するため、適切に改造すればアクセスログを生成する簡易なサーバが作成できます。 上記サンプルコードを改造して色々試してみていただければと思います。