Argh, ich verzweifel. Ich habe hier einen JavaChat Client, der per UDP Nachrichten an alle bekannten Client schickt.
Meine Firewall habe ich auf ALLOW ALL gestellt und Weiterleitung an meine lokale IP.
So. Der Chat Client verschickt UDP Pakete
und ein Empfangthread soll die Nachrichten annehmen
Starte ich das Ganze lokal auf meinem Rechner funktioniert es auch wunderbar, aber sobald er meine externe IP benutzt, grüzt das alles.....
Die SYSOUTs da oben sehen so aus:
Empfangen wird jedoch nichts
Meine Firewall habe ich auf ALLOW ALL gestellt und Weiterleitung an meine lokale IP.
So. Der Chat Client verschickt UDP Pakete
Code:
private void sendNewMessage(){
try {
DatagramSocket _msgSocket=new DatagramSocket();
StringTokenizer chatterList = new StringTokenizer(getChatterList()," ");
String sender = "<"+_chatName+">";
String msgBody = _chatLine.getText();
String msg = sender+" "+msgBody+"\n";
byte[] sendData = new byte[1024];
sendData = msg.getBytes();
DatagramPacket sendPacket;
while(chatterList.hasMoreTokens() ) {
String nextIP = chatterList.nextToken();
System.out.println("Send msg to " + nextIP);
sendPacket = new DatagramPacket( sendData, sendData.length, InetAddress.getByName(nextIP), get_msgPort());
_msgSocket.send(sendPacket);
System.out.println("Msg sent to " + nextIP + "/" + get_msgPort());
}
} catch(SocketException e) {
System.out.println("Socket Exception beim Versenden aufgetreten.");
} catch(IOException e) {
System.out.println("I/O Exception beim Versenden aufgetreten.");
}
_chatLine.setText("" );
}
und ein Empfangthread soll die Nachrichten annehmen
Code:
public void run() {
// while-loop to let the listener continue even after
// shutdown after IOException
boolean running = true;
while(running) {
try {
System.out.println("Start receiver thread");
System.out.print("Listening to ");
System.out.println(_application.get_msgPort());
_msgSocket = new DatagramSocket(_application.get_msgPort());
_msgSocket.setBroadcast(true);
_msgSocket.setReuseAddress(true);
byte[] receiveData;
while(true){
receiveData = new byte[1024];
_msg = new DatagramPacket(receiveData, receiveData.length);
_msgSocket.receive(_msg );
System.out.println("Message received");
updateClient((new String(_msg.getData() )).trim()+"\n" );
}
} catch(SocketException e){
JOptionPane.showMessageDialog(null,"Socket error on port "+_application.get_msgPort()+".\nMaybe another chat client already running?\nNo messages can be received.\nCheck for running clients and restart application.","Socket error",JOptionPane.WARNING_MESSAGE );
running=false;
e.printStackTrace();
} catch(IOException e){
// not that evil to handled.
}
}
}
Starte ich das Ganze lokal auf meinem Rechner funktioniert es auch wunderbar, aber sobald er meine externe IP benutzt, grüzt das alles.....
Die SYSOUTs da oben sehen so aus:
Message received YOURIP: 84.143.163.92
Set my ip to 84.143.163.92
set my ip 84.143.163.92
Start receiver thread
Listening to 12121
Send msg to 84.143.163.92
Msg sent to 84.143.163.92/12121
Empfangen wird jedoch nichts