使用java查询counter strike 1.6服务器信息

使用java查询counter strike 1.6服务器信息,java,udp,Java,Udp,伙计们,我正试图编写一个简单的java程序来查询counter strike 1.6服务器: import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class Test { private static DatagramSocket ds; /** * @param

伙计们,我正试图编写一个简单的java程序来查询counter strike 1.6服务器:

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class Test {

    private static DatagramSocket ds;

    /**
     * @param args
     */
    public static void main(String[] args) {
        try {
            ds = new DatagramSocket(27024);
            byte[] data;
            // TSource Engine Query
            char peer0_0[] = { 
                0xff, 0xff, 0xff, 0xff, 
                0x54, 0x53, 0x6f, 0x75,
                0x72, 0x63, 0x65, 0x20, 
                0x45, 0x6e, 0x67, 0x69, 
                0x6e, 0x65, 0x20, 0x51, 
                0x75, 0x65, 0x72, 0x79, 0x00 
            };
            data = new String(peer0_0).getBytes();

            System.out.println("send:" + new String(data));

            DatagramPacket dp = new DatagramPacket(data, 0, data.length, InetAddress.getByName("219.133.59.20"), 27021);
            ds.send(dp);
            byte[] rec = new byte[1024];
            DatagramPacket dp2 = new DatagramPacket(rec, 1024);
            ds.receive(dp2);

            System.out.println("revice:" + new String(rec));

            ds.close();
        } catch (IOException e) {
            e.printStackTrace();
            if(ds != null) ds.close();
        }
    }

}
发送查询消息后,它没有收到任何东西,程序也不会退出。 我确信219.133.59.20:27021上有一台服务器
我的代码怎么了?

我运行了你的代码,没有问题。结果如下:

send:ÿÿÿÿTSource Engine Query
revice:ÿÿÿÿm127.0.0.1:27021CoVerT战队深圳6å?·ç–¯å?‹è®°æœ?务器ã€?KP】
我怀疑你的防火墙/路由器有问题。发件人:

注意:许多防火墙和路由器配置为不允许UDP 小包。如果您在连接到外部服务时遇到问题 防火墙,或者如果客户端无法连接到您的服务,请询问 如果允许UDP,请与系统管理员联系


你能看到服务器的响应吗?是的,我看到了服务器的响应,尽管它似乎大部分是二进制的。我把它添加到我的答案描述中。希望有帮助!这似乎是一个编码问题,嘿@MansoorSiddiqui,我们能谈谈吗?