2013-08-26 5 views
0

Я пытаюсь создать рубиновый скрипт, который использует 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, когда то, что я хотел бы, это хэш. Как мне избавиться от нечетных символов и помещать информацию в хэш?

+1

Что такое формат ответа как (например, это HTTP-сервер)? Можете ли вы опубликовать пример фактического ответа? –

+0

Это сервер minecraft. Я предоставил весь код, который я использую, и точную строку, которая возвращается мне. Если вы хотите проверить его самостоятельно, вы можете сделать это с IP 192.241.174.210 –

+0

Вам необходимо реализовать протокол. Вы не можете просто сказать «избавиться от странных персонажей», не зная, что они означают. Пойдите, узнайте о протоколе онлайн, сложите эти «странные символы» в том, что они имеют в виду, и пока вы это делаете, бросьте его в хэш, если хотите. Нет волшебства. Кроме того, посмотрите пример PHP из вашего другого вопроса, как они это делают. – xaxxon

ответ

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