Ruby で TCP サーバを作成2017年09月09日 18時00分36秒

Ruby で TCP サーバを作成。C 言語などのサーバ側の基本は、socket 作成、bind でポート番号を取得、listen で接続を受け付けるの三手順が基本だが、ruby は TCPServer クラスで、socket と bind を一気に行ってしまうようだ。
% cat tcp-server.rb 
#!/usr/bin/env ruby

require "socket"

socket = TCPServer.open( 11111 )
conn = socket.accept

while buf = conn.gets
    p buf
end

conn.close

socket.close
%
ソケットを作成し、クライアントが接続して来たら、送られて来る文字列を表示。接続が切られたら、各リソースを開放し終了。

telnet をクライアント側に用いる。接続時にも表示されるが、コントロールキーと「]」の閉じ各括弧を押すと、制御が telnet に移り、quit で接続を終了できる。

% telnet localhost 11111
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Hello Ruby TCP Server.

^]
telnet> quit
Connection closed.
%

Ruby のサーバ側を見ると、改行などのコントロールもそのまま印字される様だ。

% ./tcp-server.rb
"Hello Ruby TCP Server.\r\n"
"\r\n"
%