HL server query
Herunder er hvad SDK2.2 hl protocollen siger om query til en Half-life server...Game servers will answer the following messages:
Messages are sent to the server by sending 4 consecutive bytes of 255 (32-bit integer -1) and then the string command followed by a zero byte to terminate it
Der er følgende string commands
"ping"
"info"
"players"
"rules"
Så er mit spørgsmål så om følgede kode ikke burde gøre det? (det virker ikke)
DatagramSocket socket = new DatagramSocket(27005);
byte[] buf1 = new byte[255];
byte[] buf2 = new byte[255];
byte[] buf3 = new byte[255];
byte[] buf4 = new byte[255];
byte[] buf5 = new byte['p' + 'i' + 'n' + 'g'];
byte[] buf6 = new byte[0];
byte[] buf7 = new byte[512];
InetAddress server = InetAddress.getByName(args[0]);
// Sending 1st. packet:
packet = new DatagramPacket(buf1, buf1.length, server, 27021);
socket.send(packet);
// Sending 2nd packet:
packet = new DatagramPacket(buf2, buf2.length, server, 27021);
socket.send(packet);
// Sending 3rd packet:
packet = new DatagramPacket(buf3, buf3.length, server, 27021);
socket.send(packet);
// Sending 4rd packet:
packet = new DatagramPacket(buf4, buf4.length, server, 27021);
socket.send(packet);
// Sending requst packet:
packet = new DatagramPacket(buf5, buf5.length, server, 27021);
socket.send(packet);
// Sending closing packet:
packet = new DatagramPacket(buf6, buf6.length, server, 27021);
socket.send(packet);
System.out.println("Packets send...");
packet = new DatagramPacket(buf7, buf7.length);
System.out.println("waiting for packet...");
socket.receive(packet);
String received = new String("" + packet.getData());
System.out.println("Server info: " + received);
System.out.println("Closing...");
socket.close();
System.out.println("Closed");
Hvis dette ikke er tilfældet hvad er der så galt og hvordan løser jeg problemet?
