Я пытаюсь реализовать небольшой скрипт, который создаст сервер, дождитесь подключения клиента, создаст новый поток для клиента и обработает клиентские запросы. Первый запрос от клиента будет HELO-текстом, и сервер должен ответить текстом HELO, за которым следуют IP-адрес, номер порта и номер студента. У меня это работает.Ruby Socket Programming Waiting for Client Input
Следующим запросом будет любая случайная строка, и это ничего не должно возвращать. У меня это работает.
Последний запрос будет запросом KILL_SERVICE, который должен закрыть сервер. Я не знаю, как это сделать. Другая проблема заключается в том, что моя программа будет работать только с одной командой за раз. Я не знаю, как обращаться с одной командой, а затем ждать следующей команды от клиента. Ниже приведен код сервера. Любая помощь будет оценена по достоинству.
require 'socket'
port = 8888
puts "Starting Up Server"
server = TCPServer.open(port)
while (client = server.accept)
Thread.start do
input = client.gets
if input.start_with?("HELO")
client.puts "#{input}IP:#{client.peeraddr[2]}\nPort:#{port}\nStudentID:[2]\n"
elsif input == "KILL_SERVICE\n"
client.puts "KILL"
else
puts input
end
end
end
Большое спасибо за это. Последний вопрос, который у меня есть, - это убить сервер. Сможете ли вы помочь с этим? –
Я обновил это с примечаниями о том, как обрабатывать основной процесс не только один поток. – tadman