2013-08-26 77 views
0

我正在嘗試創建一個使用TCPSocket與w/a Minecraft服務器進行通信的ruby腳本,並返回名稱,當前玩家數量和玩家人數。到目前爲止,我有以下代碼解析來自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。這讓我回到了所有的信息,但只有當我想要的是一個散列時。如何擺脫奇怪的字符並將信息放入哈希中?

+1

什麼是響應格式一樣(例如,它是一個HTTP服務器)?你能發佈一個實際的響應例子嗎? –

+0

這是一個我的世界服務器。我提供了所有我正在使用的代碼以及返回給我的確​​切字符串。如果您想自己測試,可以使用IP 192.241.174.210 –

+0

您需要實施該協議。你不能只是說「擺脫奇怪的人物」而不知道他們的意思。去網上了解協議,將這些「奇怪的人物」分解成他們的意思,並且當你這樣做的時候,如果你願意的話,把它扔到哈希中。沒有魔法。另外,請查看您的其他問題的PHP示例,瞭解它們如何實現。 – xaxxon

回答