如何显示通过套接字接收的字符?

时间:2010-09-29 21:08:32

标签: ruby sockets echo-server

我有一个非常简单的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  

1 个答案:

答案 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