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) {}
}
}