Ruby 解析来自TCPSocket的响应

Ruby 解析来自TCPSocket的响应,ruby,sockets,tcp,minecraft,Ruby,Sockets,Tcp,Minecraft,我正在尝试创建一个ruby脚本,它使用一个TCPSocket与Minecraft服务器进行通信,并返回名称、当前玩家数量和最大玩家数量。到目前为止,我有以下代码 require 'socket' class MinecraftServer def self.ping(ip, port = 25565) server = TCPSocket.new ip, port server.write "\xfe" response = [] while line

我正在尝试创建一个ruby脚本,它使用一个TCPSocket与Minecraft服务器进行通信,并返回名称、当前玩家数量和最大玩家数量。到目前为止,我有以下代码

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')
需要“套接字”
类MinecraftServer
def自动ping(ip,端口=25565)
服务器=TCPSocket.new ip,端口
server.write“\xfe”
响应=[]
而line=server.get

response下面是一个ruby代码的示例,它正好做到了这一点:

该页面链接了描述协议的内容:


响应格式是什么样的(例如,它是HTTP服务器)?你能发布一个实际的响应示例吗?这是一个minecraft服务器。我已经提供了我正在使用的所有代码以及返回给我的确切字符串。如果您想自己测试它,您可以使用IP 192.241.174.210进行测试,您需要实现该协议。你不能只说“摆脱那些奇怪的角色”,而不知道它们的意思。在线学习协议,把那些“奇怪的字符”分解成它们的意思,当你在做的时候,如果你想的话,把它扔进一个散列中。没有魔法。另外,看看另一个问题中的PHP示例,了解他们是如何做到这一点的。似乎是一个很好的参考。很有趣。看起来php客户端已经过时了,ping消息现在有点复杂了。