Hallo!
Follgendes Problem
wenn ich die methode rconGueltig() aufrufe macht sie alles richtig. True wenn passwort richtig ist und false wenn falsch...
wenn ich die methode holeDaten() mit einem richtigen passwort aufrufe macht sie ebenfalls alles richtig.
Aber wenn ich aber follgendes mache:
dann wird zwar rconGueltig() ausgeführt, das programm bleibt aber beim holeDaten() hängen.
Wie man sieht sockets sind geschlossen...
Weiss jemand was ich machen soll damit das funktioniert? Ich meine einzeln funktioniert ja alles aber zusammen nicht
Follgendes Problem
Java:
private final String HEADER_A = "ÿÿÿÿrcon ";
private final String HEADER_U = "ÿÿÿÿ ";
private String pw = "";
private boolean mitRcon;
private InetSocketAddress serverAdresse;
private final String STATUS = "status";
private final String GETSTATUS = "getstatus";
private boolean stop;
private String endDaten = "";
public Verbindung(AktuellerServer aktuellerServer) {
this.serverAdresse = aktuellerServer.getServerAdresse();
this.mitRcon = aktuellerServer.isMitRcon();
this.pw = aktuellerServer.getPw();
}
public boolean rconGueltig() {
if (pw.length() > 0) {
DatagramSocket socket = null;
DatagramPacket antwort = null;
byte[] antw = new byte[127];
byte[] in;
try {
in = (HEADER_A + pw).getBytes("ISO-8859-1");
} catch (UnsupportedEncodingException e1) {
// mach default dann
in = (HEADER_A + pw).getBytes();
}
try {
socket = new DatagramSocket();
socket.send(new DatagramPacket(in, in.length, serverAdresse));
socket.setSoTimeout(1000);
antwort = new DatagramPacket(antw, antw.length);
socket.receive(antwort);
socket.close();
} catch (SocketException e) {
return false;
} catch (IOException e) {
return false;
}
String ausg;
try {
ausg = new String(antwort.getData(), 0, antwort.getLength(),
"ISO-8859-1");
} catch (UnsupportedEncodingException e) {
ausg = new String(antwort.getData(), 0, antwort.getLength());
}
if (ausg.contains("Bad rconpassword.")) {
System.out.println("wtf");
return false;
}
// sonst
return true;
} else {
return false;
}
}
public void holeDaten() throws IOException{
DatagramSocket socket = new DatagramSocket();
byte[] in = (HEADER_A + pw + " " + STATUS).getBytes("ISO-8859-1");
/* SENDEN */
socket.send(new DatagramPacket(in, in.length, serverAdresse));
String endDaten = "";
byte[] aus = new byte[1024];
/* EMPFANGEN */
while (!stop) {
DatagramPacket antw = new DatagramPacket(aus, 0, aus.length);
try {
socket.receive(antw);
socket.setSoTimeout(50);
} catch (IOException e) {
stop = true;
break;
}
String fragmentString = new String(antw.getData(), 0, antw
.getLength(), "ISO-8859-1");
endDaten += fragmentString;
}
socket.close();
}
}
wenn ich die methode rconGueltig() aufrufe macht sie alles richtig. True wenn passwort richtig ist und false wenn falsch...
wenn ich die methode holeDaten() mit einem richtigen passwort aufrufe macht sie ebenfalls alles richtig.
Aber wenn ich aber follgendes mache:
Java:
if ( rconGueltig()){
holeDaten();
}
dann wird zwar rconGueltig() ausgeführt, das programm bleibt aber beim holeDaten() hängen.
Wie man sieht sockets sind geschlossen...
Weiss jemand was ich machen soll damit das funktioniert? Ich meine einzeln funktioniert ja alles aber zusammen nicht
Zuletzt bearbeitet: