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で接続してくる相手に関する情報を表示するため、適切に改造すればアクセスログを生成する簡易なサーバが作成できます。 上記サンプルコードを改造して色々試してみていただければと思います。

プロフェッショナルIPv6解説動画シリーズ再生リスト

動画で学ぶ「プロフェッショナルIPv6」を作っています。 もしよろしければご覧ください。お楽しみいただければ幸いです!