0

「エコーサーバー」として機能する非常に単純な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  
4

1 に答える 1

2

問題は、誰かが接続するたびにコードが while ループを 1 回しか実行していないことです (TCPServer#accept は接続を受け入れます)。次のようなものを試してください:

require 'socket'  

puts "Simple Echo Server V1.0"  
server = TCPServer.new('127.0.0.1', '2150')

socket = server.accept  

while line = socket.readline
  socket.puts line
  puts line
end
于 2010-09-30T01:25:47.297 に答える