Avatar billede soreno Praktikant
07. maj 2003 - 17:29 Der er 8 kommentarer og
1 løsning

byte værdier

Stemmer dette:
byte sendData[] = {(byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff, (byte)'i', (byte)'n', (byte)'f', (byte)'o', (byte)0x00};

overens med:
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

"info" er en string command.

?

(Jeg kan nemlig ikke få det til at makke ret)
Avatar billede arne_v Ekspert
07. maj 2003 - 17:38 #1
Det virker meget rigtigt.
Avatar billede arne_v Ekspert
07. maj 2003 - 17:38 #2
Men hvordan sender du de data ?
Avatar billede soreno Praktikant
07. maj 2003 - 17:39 #3
Som UDP, sådan:

import java.io.*;
import java.net.*;
import java.util.*;

public class Main
{
    public static void main(String[] args)
    {
        try
        {
            byte sendData[] = {(byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff,
                              (byte)'i', (byte)'n', (byte)'f', (byte)'o',
                              (byte)0x00};
                             
            byte recvData[] = new byte[4096];
            InetAddress addr = InetAddress.getByName("localhost");
            int port = 27015;
           
            DatagramSocket socket = new DatagramSocket();
            DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, addr, port);
            socket.send(sendPacket);
            System.out.println("**Datagram sent");

            DatagramPacket recvPacket = new DatagramPacket(recvData, recvData.length);
            socket.receive(recvPacket);
            System.out.println("**Datagram recv");
            String recv = new String(recvPacket.getData());
            System.out.println(recv);
                   
            socket.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

Men jeg modtager aldrig et reply..
Avatar billede arne_v Ekspert
07. maj 2003 - 17:43 #4
Hm.

Modtager det i den anden ende ingen data, forkerte data eller delvise data ?
Avatar billede soreno Praktikant
07. maj 2003 - 17:45 #5
Det kan jeg ikke se.
Det er en "half-life" server som skal returnere info for det aktuelle spil når kommandoen sendes.

Der står:
"info"
    Server responds with the following packet:
    (int32)        -1
    (byte)        ASCII 'C' (info response, S2A_INFO)
    (string)        net address of server
    (string)        name of the host / server
    (string)        name of the map
    (string)        game directory (i.e. valve/)
    (string)        Game description (e.g. "half-life multiplay")
    (byte)        active client count
    (byte)        maximum clients allowed
    (byte)        protocol version (currently 7)

Men jeg modtager intet (tror jeg - første forsøge med UDP).
Avatar billede soreno Praktikant
07. maj 2003 - 17:54 #6
Det er åbenbart mig der er en skovl til at sætte en half-life server op.
Jeg har lige testet med en mere officiel server - det virker.
Avatar billede soreno Praktikant
07. maj 2003 - 17:54 #7
Læg et svar.
Avatar billede arne_v Ekspert
07. maj 2003 - 18:24 #8
svar

(men jeg er lidt usikker på hvad jeg reelt har bidraget med)
Avatar billede soreno Praktikant
07. maj 2003 - 18:26 #9
Du svarede på spørgsmålet.. :-)

(om mine bytes stemmer overens med protokollens definition)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester