Как отображать символы, полученные через сокет?
У меня есть очень простая программа на 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 ответ
Проблема в том, что ваш код выполняет цикл 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