我有一个非常简单的Ruby程序,它充当“echo服务器”。当您通过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
答案 0 :(得分:1)
问题在于,每次有人连接时,您的代码只运行一次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