Как отображать символы, полученные через сокет? - PullRequest
0 голосов
/ 30 сентября 2010

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

Ниже приведена небольшая урезанная программа, в которой возникает проблема.1005 * очень новичок в 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 Ответ

1 голос
/ 30 сентября 2010

Проблема в том, что ваш код запускает цикл 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
...