Я пытаюсь создать рубиновый скрипт, который использует TCPSocket для связи с сервером Minecraft и возвращает имя, текущее количество игроков и максимальное количество игроков. До сих пор у меня есть следующий кодАнализ ответа от TCPSocket
require 'socket'
class MinecraftServer
def self.ping(ip, port = 25565)
server = TCPSocket.new ip, port
server.write "\xfe"
response = []
while line = server.gets
response << line
end
server.close
response = response.join
response
end
end
puts MinecraftServer.ping('xxx.xxx.xxx.xxx')
Это дает мне что-то назад, как �A Minecraft Server�0�20
. Это возвращает мне всю информацию, но в sring, когда то, что я хотел бы, это хэш. Как мне избавиться от нечетных символов и помещать информацию в хэш?
Что такое формат ответа как (например, это HTTP-сервер)? Можете ли вы опубликовать пример фактического ответа? –
Это сервер minecraft. Я предоставил весь код, который я использую, и точную строку, которая возвращается мне. Если вы хотите проверить его самостоятельно, вы можете сделать это с IP 192.241.174.210 –
Вам необходимо реализовать протокол. Вы не можете просто сказать «избавиться от странных персонажей», не зная, что они означают. Пойдите, узнайте о протоколе онлайн, сложите эти «странные символы» в том, что они имеют в виду, и пока вы это делаете, бросьте его в хэш, если хотите. Нет волшебства. Кроме того, посмотрите пример PHP из вашего другого вопроса, как они это делают. – xaxxon