UDP Client reagiert nicht auf spontane Meldungen
Hallo,
mein (UDP) Client funktioniert so weit recht gut. Nur etwas stört mich noch:
Er reagiert zwar auf eine spontane meldung vom Server (was er für meine Applikation auch soll), aber nur wenn ich schon mal eine Request gesendet habe.
Beim Debuggen sehe ich, dass das Programm nach dem connecten auf der Zeile
stehen bleibt, wie erwartet.
Trotzdem reagiert receive from nicht auf die (spontane Startup-) Message von meinem Device!
Sende ich nun ein Request an das Device, kommt ordnungsgemäss die Response.
Mache ich ein erneutes Reset auf dem Device, damit dieses wieder eine (spontane Startup-) Message schikt, wird diese plötzlich auch empfangen. (Spontane meldungen sind also möglich; ist ja auch "nur" UDP)
=> Es scheint, dass ich zuerst eine Meldung schicken muss, bevor ich eine empfangen kann!?
hier mal der Code des Receive-Threads:
hat jemand eine Idee?
Hallo,
mein (UDP) Client funktioniert so weit recht gut. Nur etwas stört mich noch:
Er reagiert zwar auf eine spontane meldung vom Server (was er für meine Applikation auch soll), aber nur wenn ich schon mal eine Request gesendet habe.
Beim Debuggen sehe ich, dass das Programm nach dem connecten auf der Zeile
Java:
byte[] rec = udpClient.recieveFrom(connectAddress, connectPort);
Trotzdem reagiert receive from nicht auf die (spontane Startup-) Message von meinem Device!
Sende ich nun ein Request an das Device, kommt ordnungsgemäss die Response.
Mache ich ein erneutes Reset auf dem Device, damit dieses wieder eine (spontane Startup-) Message schikt, wird diese plötzlich auch empfangen. (Spontane meldungen sind also möglich; ist ja auch "nur" UDP)
=> Es scheint, dass ich zuerst eine Meldung schicken muss, bevor ich eine empfangen kann!?
hier mal der Code des Receive-Threads:
Java:
class RecieceThread implements Runnable {
@Override public void run() {
while (true) {
synchronized(this) {
if ((udpClient != null) && (!udpClient.isClosed())) {
try {
byte[] rec = udpClient.recieveFrom(connectAddress, connectPort);
System.out.println(rec.length);
String s = bytesToHexString(rec, ' ');
recTextArea.append(s + "\n");
System.out.println(s);
} catch( Exception e ) {
e.printStackTrace();
System.out.println("ReceiveThread Error: " + e);
}
}
}
}
}
}
hat jemand eine Idee?