Hallo,
bin gerade dabei mich mit Sockets unter Java zu beschäftigen.
Habe Folgende Funktion zum Lesen geschrieben:
Mein Thread ruft die Funktion so auf:
Durch "this.client.setSoTimeout(10000);" will ich eigentlich dass die Funktion nextLine() maximal 10000ms auf eine Nachricht wartet
und ansonsten "keine nachricht" ausgegeben wird. Und das ganze in einer whileschleife.
Wie bekomme ich es nun hin, den nextLine()aufruf nicht blockierend zu erstellen?
Mit freundlichem Gruß
Finnex
bin gerade dabei mich mit Sockets unter Java zu beschäftigen.
Habe Folgende Funktion zum Lesen geschrieben:
Code:
public String getMessagefromClient() {
String message;
try {
this.client.setSoTimeout(10000);
try {
message = this.in.nextLine();
} catch (NoSuchElementException e) {
message = null;
}
} catch (SocketException e) {
message = null;
}
return message;
}
Mein Thread ruft die Funktion so auf:
Code:
@Override public void run()
{
System.out.println("Client accepted! ThreadId "+ this.getThreadID());
String message;
while(true) {
message = this.getMessagefromClient();
if(message != null){
System.out.println(message);
} else {
System.out.println("keine nachricht!");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Durch "this.client.setSoTimeout(10000);" will ich eigentlich dass die Funktion nextLine() maximal 10000ms auf eine Nachricht wartet
und ansonsten "keine nachricht" ausgegeben wird. Und das ganze in einer whileschleife.
Wie bekomme ich es nun hin, den nextLine()aufruf nicht blockierend zu erstellen?
Mit freundlichem Gruß
Finnex