Forum
Tipps
News
Menu-Icon

[Java] Scanner.nextLine() - No Line Found

Hi Leute,

ich habe gerade mit Java angefangen und eigne mir sehr viel durch "learning by doing" an.

Im Moment soll es ein Chatserver werden. Ich bin kein Programmieranfänger, in PHP bin ich sozusagen Profi und früher hab ich mal ne Zeit lang VisualBasic.NET gemacht. Sollte also nicht so schwer werden.

Aus vielen Tutorials und Videos hab ich mir schon folgendes zusammengebastelt:
StillePost.java:

package stillePost;

import java.util.Scanner;

public class StillePost {

public static Server server = null;
public static Client client = null;

public static void main(String[] args) {
try {

System.out.println("Press [ENTER] to start client");
Scanner keyboard = new Scanner(System.in);
String input;
input = keyboard.next();
keyboard.close();
if(input.equals("server")) {
//if(args[0].equals("server")) {
System.out.println("starting server");
server = new Server();
server.start();
} else {
System.out.println("starting client");
client = new Client();
client.start();
}

} catch (Exception e) {
e.printStackTrace();
}
}

}

Client:
package stillePost;

import java.io.PrintWriter;
//import java.io.IOException;
import java.net.Socket;
import java.util.Scanner;


public class Client extends Thread {

private final static int PORT = 4444;
private final static String HOST = "localhost";

public void start() {
try {
Socket socket = new Socket(HOST, PORT);
System.out.println("You'r now connected to " + HOST + ":" + PORT);

try {

Scanner keyboard = new Scanner(System.in);
Scanner in = new Scanner(socket.getInputStream());
PrintWriter out = new PrintWriter(socket.getOutputStream());

while(true) {
// ===== Fehler =====
String input = keyboard.nextLine();
out.println(input);
out.flush();

while(in.hasNext())
System.out.println(in.nextLine());
}

} catch (Exception e) {
e.printStackTrace();
}

} catch (Exception e) {
System.out.println("Der Server scheint offline zu sein.");
System.out.println("Versuche es dann noch einmal.");
e.printStackTrace();
}
}
}

Das Ganze soll also Server und Client in einem werden, nur, dass der Server etwas versteckt ist. :)

1. Der Client kann super zum Server connecten aber es scheitert beim Clienten an der Zeile, die ich markiert habe:
java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at stillePost.Client.start(Client.java:26)
at stillePost.StillePost.main(StillePost.java:26)
2. Wenn ich bei der allerersten Eingabeaufforderung (also ob der Server starten soll) einfah ENTER drücke, dann passiert nichts, erst wenn ich mindestens ein Zeichen eingebe. Weiß jemand wie man das ändern kann?

Vielen Dank für Eure Mühe.

Später wird das Ganze um GUI und serverseitige Befehlsverarbeitung erweitert.

Antworten zu [Java] Scanner.nextLine() - No Line Found:

Ohh, sorry, ich hab mit nem Freund noch mal drüber geschaut und irgendwie haben wirs hinbekommen.
Ich glaube es lag im Groben daran, dass der Scanner an Anfang geschlossen wurde und dann ein Neuer geöffnet wurde, was irgendwie nicht funktioniert.


« char array um 90 grad drehenWord dokument - wörter per programm verändern »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Java
Java ist eine von der Firma SUN entwickelte Programmiersprache. Da Java unabhängig vom Betriebssystem läuft, kann ein einmal geschriebenes Programm auf allen Ja...

Javascript
JavaScript ist eine weit verbreitete Skriptsprache, die ursprünglich von Netscape für das DOM-Scripting für Webseiten entwickelt wurde. Sie hat sich seitde...

PHP
PHP steht für Personal Home Page und ist eine Skriptsprache die meist verwendet wird zur dynamischen Erzeugen von Internetseiten. PHP zeichnet sich durch die weite D...