Avatar billede kohaar Nybegynder
30. marts 2004 - 15:38 Der er 1 løsning

Langsom multicast

Hejsa. Jeg er ved at lave et spil der skal fungere over lokalnetværk. Mit problem er at der er et delay på dataerne jeg sender og modtager, og delayet synes af en eller anden grund at blive større og større jo længere tid der går. Lidt underligt. Jeg sender ca 20 bytes 40 gange i sekundet, men skulle et lokalnetværk ikke kunne klare det?

Her er de 2 klasser jeg bruger til at sende og modtage data. De er kun lavet som test (dvs at jeg kun sender fra det ene spil og modtager fra det andet)

// Class that send data
import java.io.*;
import java.net.*;

public class SendNet {
    int port;
    String group;
    MulticastSocket s;

    public SendNet() {
        System.out.println("Connected SendNet");
        port = 5000;
        group = "230.0.0.1";
        try {
            s = new MulticastSocket();
            System.out.println("Connected!");
        } catch (IOException e) {System.out.println("Error");}
    }

    public void sendData(String up, String down, String left, String right) {
        try
        {
            String st = up+"-"+down+"-"+left+"-"+right+"-";
            System.out.println("Sending: "+st);
            byte[] b = new byte[st.length()];
            b = st.getBytes();
            DatagramPacket pack = new DatagramPacket(b, b.length, InetAddress.getByName(group), port);
            s.send(pack);
        }  catch (IOException e) {}
    }

    public void closeConnection() {
        try {
            s.leaveGroup(InetAddress.getByName(group));
            s.close();
        } catch (IOException e) {}
    }
}


// Class that receive data
import java.net.*;
import java.io.*;

public class ReceiveNet {
    int port;
    String group;
    MulticastSocket s;
    String[] move;

    public ReceiveNet() {
        port = 5000;
        group = "230.0.0.1";
        try {
            s = new MulticastSocket(port);
            s.joinGroup(InetAddress.getByName(group));
            System.out.println("Connected!");
        } catch (IOException e) {System.out.println("Error");}
    }

    public String[] getData() {
        byte buffer[] = new byte[20];
        DatagramPacket pack = new DatagramPacket(buffer, buffer.length);
        try
        {
            s.receive(pack);
            String st=new String(pack.getData());
            move = st.split("-");
            System.out.println("Receiving: "+st);
        }
        catch (IOException e) {}
        return move;
    }

    public void closeConnection() {
        try {
            s.leaveGroup(InetAddress.getByName(group));
            s.close();
        } catch (IOException e) {}
    }
}
Avatar billede kohaar Nybegynder
01. oktober 2004 - 01:51 #1
Sådan
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