2010-09-29 66 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

相關問題