Scanner "scannt" die Daten nicht

Heho zusammen,
Ich möchte einen kleinen Chat programmieren. Mein jetziges Problem ist, dass der Server Daten schickt aber der Scanner vom Client keine Daten vom Server liest und somit hängt sich der Client auf.

Hier ist mal der ClientCode und er hängt dann in der Methode sendLogin() beim input.nextint();


	private Socket server;
	private Scanner input;
	private PrintWriter output;
	private boolean isConnected = false;

	public ChatClientNet() {
		try {
			server = new Socket("localhost", 1234);
			isConnected = true;
			input = new Scanner(server.getInputStream());
			output = new PrintWriter(server.getOutputStream());
		} catch (UnknownHostException e) {
			System.err.println("Host nicht gefunden");
			// TODO Auto-generated catch block
			// e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public boolean sendMsg(String msg) {
		if (isConnected) {
			System.out.println("Clinet MSG: " + msg);
			boolean succes = false;
			try {
				output = new PrintWriter(server.getOutputStream());
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			if (msg != null) {
				output.println(msg);
				succes = true;
				output.flush();
			}
			return succes;
		}
		return false;
	}

	public String sendLogin(String msg) {
		if (isConnected) {
			

			if (msg == null || msg.equals("")) {
				return "Bitte einen Username eingeben";
			}

			if (server.isConnected()) {
				output.write("Login¤" + msg);
				output.flush();
				ChatInfo.sendInfo("Login anfrage wurde verschickt "+msg);				
				int checkNubmer = input.nextInt();
				if (checkNubmer == 1) {
					return "Erfolgreich eingelogt";
				}
				if (checkNubmer == 2) {
					return "Dieser Username ist bereits angemedet";
				}
				if (checkNubmer == 3) {
					return "Der Username ist Ungültig";
				}
			}
			return "Error";

		}
		return "Host nicht gefunden";
	}

	@Override
	public void run() {
		while (server.isConnected()) {
			System.out.println("ChatClient: Nachricht erhalten");
		}

	}

}```  

und nun der Server Code. In der Methode handlingMsg() ist die Bedingung der If-Schleife true.
```public class ChatSocketHandling implements Runnable {

	private Socket clientSocket;
	private Scanner input;
	private PrintWriter output;
	private ChatServer cS;

	public ChatSocketHandling(Socket clinet, ChatServer cS) {
		this.cS = cS;
		clientSocket = clinet;
		try {
			input = new Scanner(clientSocket.getInputStream());
			output = new PrintWriter(clientSocket.getOutputStream(),true);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Thread t = new Thread(this);
		t.start();
	}

	@Override
	public void run() {
		while (true) {
			try {
				handlingMSG(input.nextLine());
				ChatInfo.sendInfo("Nachricht gelesen");
			} catch (NoSuchElementException e) {
//				System.out.println("ChatServer: LineNotFound");
//				e.printStackTrace();
			} catch (IllegalStateException e) {
//				System.out.println("ChatServer: Socket is closed");
			}
		}
	}

	// -------------------------------
	// Behandlung der MSG
	// -------------------------------

	private void handlingMSG(String msg) {
		int msgType=msgCheck(msg);
		if(msgType==1){
			ChatInfo.sendInfo("msgType==1");
			output.println(1);
			output.flush();

		}
	}
	
	private int msgCheck(String msg){
		ChatInfo.sendInfo("msgCheck");
		String[] splitMSG=msg.split("¤", 2);
		if(splitMSG[0].equals("Login")){
			return 1;
		}
		return 0;
	}
	

}```

und jetzt noch der Code vom Server wo er den Socket "empfängt".
```public class ChatServer implements Runnable{

	private ChatServerUI csui;
	private ServerSocket serverSocket;
	private Socket clientSocket;
	
	
	public ChatServer(ChatServerUI csui) {
		this.csui=csui;
		try {
			serverSocket=new ServerSocket(1234);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Thread t=new Thread(this);
		t.start();
		csui.getcA().addText("Server gestartet");
		
	}


	@Override
	public void run() {
		clientSocket=null;
		while(true){
			try {
				clientSocket=serverSocket.accept();
				ChatSocketHandling csh=new ChatSocketHandling(clientSocket, this);
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}

	public ChatServerUI getCsui() {
		return csui;
	}
	
}```

Hallo!

Ich vermute, dass der Server die Anmeldung gar nicht vollständig erhält. Der Server wartet auf ein Zeilenende. Bei der Anmeldung schickst du es aber nicht mit. Mach in Zeile 53 ein writeLine und nicht nur ein write.

Gruß TingelTangel

facepalm Alles hab ich überprüft aber genau das nicht.

Naja es geht jetzt.

Danke TingelTangel

Bei der Anmeldung schickst du es aber nicht mit.