2010-09-29 65 views
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 

回答

1

问题是您的代码只在每次连接某个人(TCPServer#accept接受连接)时运行while循环一次。尝试更类似于:

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 
+0

谢谢。知道这将是我忽略的东西。 – Timm 2010-09-30 15:23:44

相关问题