感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

RubyでSocketプログラミング超入門編

<スポンサーリンク>

Rubyでソケットプログラミング

  • Rubyのソケットライブラリ

TCPServerやTCPSocketというのは、その名の通り、TCPソケットを作成し、利用するためのクラス。
TCPSocketはクライアント側、TCPServerはサーバ側のアプリケーションを作成する。

Socket.openというのは、新しいソケットを作成する。
Socket#bindで、作成したソケットをシステムに知らせる。自分自身のIPアドレスやポート番号をbindメソッドに渡す。
bindメソッドで、特定のポートへのソケットの割り当てを行う。
その次は、Socket#listenである。
接続を受け入れられる状態にする。

Socket#acceptで、接続を確立させる。
本の例えがわかりやすかったんだけど、listenしているポート番号は総合受付の窓口で、そこで接続要求が受理(accept)されると、個別の窓口(新しいソケットのポート番号)に案内されて、以後はその窓口でやり取りを行うという仕組みになっている。

以下は、クライアントからメッセージを投げて、サーバ側で受け取るSocket通信のサンプル。
echo-client.rb

require 'socket'

host = if ARGV[0] then ARGV[0] else 'localhost' end
port = if ARGV[1] then ARGV[1] else 'echo' end
sock = TCPSocket.open(host, port)

while msg = STDIN.gets
	print("you writed:", msg)
	#socketに書き込む
	sock.write(msg)
	#サーバから返ってきたメッセージを表示する。
	print("return message:", sock.gets)
end
sock.close

echo-server.rb

require 'socket'

port = if ARGV[0] then ARGV[0] else 'echo' end
gate = TCPServer.open(port)

sock = gate.accept
gate.close

while msg = sock.gets
	sock.write(msg)
	print("you get:", msg)
end
sock.close

実行すると、
クライアント側は、

>ruby echo-client.rb localhost 9999
hello!
you writed:hello!
return message:hello!
World!
you writed:World!
return message:World!

サーバ側はこうなる。

> ruby echo-server.rb 9999
you get:hello!
you get:World!

CGIって何?(これはただのメモ)

CGIは「Common Gateway Interface」の略で、Webサーバとそこから起動されるプログラムとのやりとりについての基底である。
今ではすっかり死語のようになってしまったが、せっかくなので勉強する。

ユーザーがキーワードを入力する。
その入力されたキーワードがHTTPサーバに渡される。
HTTPサーバが受け取ったキーワードを元に、CGIスクリプトが結果を出力。
それをWebサーバが受け取り、サーバからHTTPを介してブラウザに結果を返す・・・。

これが古き良い次代のCGIというものだ。

勉強した本

Rubyアプリケーションプログラミング

Rubyアプリケーションプログラミング

感謝のプログラミング

今回で感謝のプログラミングは【575時間目】
10000時間まで、あと【9425時間】