Socket Programmierung - Blockierende Funktion nextLine()

finnex

Erfahrenes Mitglied
Hallo,
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
 
Moin,

Durch "this.client.setSoTimeout(10000);" will ich eigentlich dass die Funktion nextLine() maximal 10000ms auf eine Nachricht wartet

Leider hast Du nicht beschrieben, was genau passiert oder eben nicht passiert ;-]

Du musst das Timeout der entsprechenden Socket zuordnen ... es ist die große Frage, was bei Dir in dem Moment THIS ist !!

gruß
Klaus
 
Zurück