Hallo,
ich bin gerade dabei mich etwas in die Netzwerkprogrammierung von Java einzuarbeiten. Mit TCP habe ich es bereits geschafft ein 4 gewinnt über das Netzwerk spielbar zu machen. Da ich aber niemanden zumuten will/kann, dass er für so einfache games seine Firewall öffnet, wollte ich es mit UDP und dem Hole Punching probieren.
An sich ist doch die Sache, dass ich einfach ganz viele Pakete an eine Adresse schicke und dadurch der Router Pakete von dort zu mir weiterleitet.
Deshalb habe ich folgendes Testprogram geschrieben
Klasse als Thread die immer nur sendet
und ein weitere Thread der nur horcht und wenn er was gefunden hat in eine Textarea schreibt
Leider funktioniert es nicht. Ich habe es so getestet:
A) 1PC mit Router <-> B) 1 PC ohne Router
B bekommt die Pakete von A, aber A keine von B. Deshalb denke ich mal, dass der Router diese nicht weiterleitet.
Habe ich irgendetwas falsch gemacht oder woran könnte es noch liegen?
Danke und Gruß
seejay
ich bin gerade dabei mich etwas in die Netzwerkprogrammierung von Java einzuarbeiten. Mit TCP habe ich es bereits geschafft ein 4 gewinnt über das Netzwerk spielbar zu machen. Da ich aber niemanden zumuten will/kann, dass er für so einfache games seine Firewall öffnet, wollte ich es mit UDP und dem Hole Punching probieren.
An sich ist doch die Sache, dass ich einfach ganz viele Pakete an eine Adresse schicke und dadurch der Router Pakete von dort zu mir weiterleitet.
Deshalb habe ich folgendes Testprogram geschrieben
Klasse als Thread die immer nur sendet
Java:
while (true)
{
try {
SocketAddress addr = new InetSocketAddress( this.ip, 9876 );
DatagramSocket clientSocket = new DatagramSocket();
byte[] sendData = new byte[1024];
sendData = "Sehr komisch".getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, addr);
clientSocket.send(sendPacket);
clientSocket.close();
Thread.sleep(500);
} catch (InterruptedException ex) {
Logger.getLogger(UDPSend.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(UDPSend.class.getName()).log(Level.SEVERE, null, ex);
}
}
Java:
try {
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte[1024];
while (true)
{
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String sentence = new String( receivePacket.getData());
view.addMessage(sentence);
}
} catch (IOException ex) {
Logger.getLogger(UDPReceive.class.getName()).log(Level.SEVERE, null, ex);
}
Leider funktioniert es nicht. Ich habe es so getestet:
A) 1PC mit Router <-> B) 1 PC ohne Router
B bekommt die Pakete von A, aber A keine von B. Deshalb denke ich mal, dass der Router diese nicht weiterleitet.
Habe ich irgendetwas falsch gemacht oder woran könnte es noch liegen?
Danke und Gruß
seejay