2010-09-29 3 views
0

У меня очень простая программа Ruby, которая действует как «сервер эха». Когда вы подключаетесь к нему через telnet, любой текст, который вы вводите, возвращается обратно. Эта часть работает. Если я добавлю оператор 'putc', чтобы также печатать каждый полученный символ на консоли, на которой запущена программа, выводится только самый первый отображаемый символ. После этого он продолжает отсылать все обратно к telnet-клиенту, но на консоли ничего не печатается.Как отображать символы, полученные через гнездо?

Следующая небольшая, урезанная программа, которая обнаруживает проблему.

Я очень новый для Руби и, вероятно, сделал типичную ошибку новобранец. Что я сделал не так?

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 # принимает принимает соединение). Попробуйте что-то еще:

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

Смежные вопросы