「エコーサーバー」として機能する非常に単純なRubyプログラムがあります。telnet 経由で接続すると、入力したテキストがエコー バックされます。その部分は機能しています。「putc」ステートメントを追加して、受信した各文字をプログラムを実行しているコンソールにも出力すると、表示された最初の文字だけが出力されます。その後も telnet クライアントにエコー バックし続けますが、コンソールには何も表示されません。
以下は、問題を示す小さな、簡素化されたプログラムです。
私はRubyに非常に慣れていないため、おそらく典型的な初歩的なミスを犯した可能性があります。私は何を間違えましたか?
require 'socket'
puts "Simple Echo Server V1.0"
server = TCPServer.new('127.0.0.1', '2150')
cbuf = ""
while socket = server.accept
cbuf = socket.readchar
socket.putc cbuf
putc cbuf
end