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循环(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 回答