Java Server Scanner oder InputStream kann nicht gelsesen werden!

Fireflo13

Mitglied
Hallo leute,

Ich habe ein Problem und zwar möchte ich einem Server Nachrichten senden, nur wenn ich versuche dem Server eine Nachricht zu senden passiert beim Server nichts. Bitte um hilfe!

Hier ist der Code vom Server: (Der Client Sendet einfach nur mithilfe von PrintWriter eine nachricht)

Für das lesen von Nachrichten ist Zeile 79 zuständig!!!


Java:
package Fireflo13.ChatProgramm.Server;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Scanner;

import com.Fireflo13.Specials.Specials;

public class Server {

	static ServerSocket server;
	static Socket Connection;
	static ArrayList<OutputStream> List_OutputStreams = new ArrayList<OutputStream>();
	static ArrayList<InputStream> List_InputStreams = new ArrayList<InputStream>();
	static int Client_Counter = -1;
	static Specials SC = new Specials();
	
	public static void main(String[] args) {
		if		(ServerStart(2014)) THE_SERVER();
		else if (ServerStart(5070)) THE_SERVER();
		else if (ServerStart(3127)) THE_SERVER();
		else {
			System.err.println("Alle ports auf denen der Server getestet hat, sind blockiert!");
			System.err.println("Bitte Schließen sie Programme mit diesen Ports!");
		}
	}
	
	private static boolean ServerStart(int port) {
		try {
			server = new ServerSocket(port);
			System.err.println("Server gestartet mit port: " + server.getLocalPort());
			return true;
		} catch (IOException e) {
			System.err.println("Server mit port: " + port + " konnte nicht gestartet werden!");
			return false;
		}
	}
	
	//Connection Listener -------------------------------------------------------------------------------------------------------------
	static Thread ConnListener = new Thread() {
		
		public void run() {
			while (true) {
				try {
					if ((Connection = server.accept()) != null) {
						System.out.println("Client wurde empfangen!");
						
						
						if (List_OutputStreams.add(Connection.getOutputStream())) {
							if (List_InputStreams.add(Connection.getInputStream())) {
								Client_Counter++;
								System.out.println("ID wurde zugewiesen: Client NR." + Client_Counter);
								
								//Client -------------------------------------------------------------------------------------------------------------------------
								Thread Client = new Thread() {
									
									@SuppressWarnings("resource")
									public void run() {
										int ill = 0;
										int id = Client_Counter;
										
										String nachricht = null;
										InputStream inStream = List_InputStreams.get(id);
										Scanner in = new Scanner(inStream);

										while (true) {
											try {
												System.err.println("Das ist ein Schleifendurchgang! " + inStream.available());
                                                                                                //inStream.availble() = 0!!!
											} catch (IOException e) {
												// TODO Auto-generated catch block
												e.printStackTrace();
											}
											
                                                                                        //Lesen von Nachrichten nur hier passiert nichts : (
											nachricht = in.nextLine();
											
											if (nachricht != null) {
												int i = Client_Counter;
												System.out.println(": " + nachricht);
												
												while (i != -1) {
													System.out.println(i);
													OutputStream pp = List_OutputStreams.get(i);
													PrintWriter pr = new PrintWriter(pp);
													pr.println(nachricht + ill++);
													pr.flush();
													i--;
												}
											}
											System.err.println("Schleifenende!");
										}
									}	
								};
								Client.start();
							}
						}
						else {
							System.err.println("Es gab einen Fehler bei der zuweisung der ID eines Clients!");
							Connection.close();
						}
					}
				} catch (IOException e) {
					System.err.println("Es gab ein Fehler bei der Akzeptierung eines Clients!");
				}
			}
		}
	};
	
	//Server HauptThread --------------------------------------------------------------------------------------------------------------
	private static void THE_SERVER() {
		ConnListener.start();
	}

}

Danke für die Hilfe!
 
Zuletzt bearbeitet:

Kevin94

Top Contributor
Wenn man von der schlechten Formatierung und der konsequeten Misachtung der Code Conventions (Benennung von Variablen, kleinst nötiger Scope von Variablen, keine Seiteneffekte in if/while Köpfen) absieht, kann ich keinen offensichtlichen Fehler im Servercode entdecken. Ich gehe mal davon aus, dass du durch Debugging überprüft hast, dass die Zeile 79 bzw. 81 überhaupt ausgeführt wird. Wenn Server und Client Code als Fehlerquelle ausgeschlossen wurde, könnte man noch die Firewall als Fehlerquelle in Betracht ziehen (allerdings sehr unwahrscheinlich, wenn das ganze nur über localhost läuft).
Und ein paar Anmerkungen zu deinem Code hab ich auch noch:
  1. List.add gibt immer true zurück, die if Abfragen in den Zeilen 54/55 sind also unnötig
  2. Warum speicherst du In/OutputStream eines Clients und nicht den Socket oder besser noch den Client Thread, der das Socket als Instanzvariable hält? (s. 3)
  3. Ich halte es für grob fahrlässig, den ClientThread den Stream per letzer ID holen zu lassen. Wenn zwei Clients gleichzeitig connecten ist es leicht möglich, dass zwei Threads auf dem selben Stream arbeiten und einer unbearbeitet bleibt.
 

MR_UNIX

Bekanntes Mitglied
Vielleicht solltest du uns doch noch deinen Client-Code zeigen. Rufst du denn auch flush() auf, nachdem du eine Nachricht sendest. Bis auf die Style-Sache, die Kevin schon genannt hat, sollte alles richtig sein - ich hab den Code aber auch nur überflogen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
JaXnPriVate Java HTTPS Server (Secure Sockets) Netzwerkprogrammierung 15
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
S Von Java auf passwortgeschützten Server zugreifen + Umgang mit Ports Netzwerkprogrammierung 28
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
S Java: Anbindung an einen realen Server? (+ Portfreigabe) Netzwerkprogrammierung 8
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
F Server für Java Applikationen Netzwerkprogrammierung 16
T Mikrofonaudio über Java Server an Webbrowser streamen Netzwerkprogrammierung 13
Aruetiise Socket Java Programm auf Server Netzwerkprogrammierung 3
S Java Chat Server Netzwerkprogrammierung 8
M Java Eingabe auf FTP Server übergeben Netzwerkprogrammierung 4
M Socket Java Server: NullPointerException Netzwerkprogrammierung 4
J Java Server empfängt php inhalt nicht Netzwerkprogrammierung 1
X Mit Java eine Applikation auf einem anderen Windows Rechner (Windows Server 2008) starten Netzwerkprogrammierung 1
F Socket Java Server mit Android App, Antwort vom Server an App Netzwerkprogrammierung 5
H Socket Java | Server sendet Nachricht nur wenn vorher eine JOptionPane-Nachricht ausgegeben wurde. Netzwerkprogrammierung 2
G Multiple Clients and one Server --> java.lang.NullPointerException Netzwerkprogrammierung 1
E Java Server übers Internet erreichen Netzwerkprogrammierung 4
F Socket Java - Server/Client simple Netzwerkprogrammierung 1
A Java Server - IOS Client Applikation Netzwerkprogrammierung 20
C Kostenloser Java-Server? Netzwerkprogrammierung 25
H Socket Java Chat - Verbindung zum Server fehlgeschlagen. Netzwerkprogrammierung 5
D TCP Verbindung (Java Client und Visual Basic Server) Netzwerkprogrammierung 12
P FTP Server mit Java, möglich ? Netzwerkprogrammierung 4
N über Java in eine Text-Datei auf einem Server schreiben Netzwerkprogrammierung 2
F Java SMTP Server Netzwerkprogrammierung 9
J HTTP Java Client / Server Internet - Webshare ?! Netzwerkprogrammierung 9
S Socket Java Server StreamCorruptedException Netzwerkprogrammierung 7
L C# WCF Server und Java Client? Netzwerkprogrammierung 2
N Socket Java server c# client problem Netzwerkprogrammierung 7
P Java Programm als Dienst auf Server Netzwerkprogrammierung 11
M client server in java Netzwerkprogrammierung 4
P Java Web Server Netzwerkprogrammierung 3
D Umwandlung von Java WebStart zu Java Server Pages Netzwerkprogrammierung 6
W Terminal-Server (Windows 2003) und Java Netzwerkprogrammierung 9
E java.net.SocketException: Unexpected end of file from server Netzwerkprogrammierung 2
H Mit Java ein JPG auf einem Server öffnen. Netzwerkprogrammierung 7
I Java Client - C Server Netzwerkprogrammierung 8
H Java.nio Server, Java.io Client Netzwerkprogrammierung 3
A Java-Programm auf einem Server laufen lassen Netzwerkprogrammierung 9
R Kommunikationsproblem zwischen JAVA-client und C-Server Netzwerkprogrammierung 5
M Java Server mit verschiedenen Kommunikationsmöglichkeiten Netzwerkprogrammierung 6
E Java Server via Swing offline setzen Netzwerkprogrammierung 4
M Java XML-RPC Server - PHP XML-RPC Client ? Netzwerkprogrammierung 8
F Java Client-Server-Client Verbindung Netzwerkprogrammierung 9
J Server soll Zugriff auf Java Programm ermöglichen Netzwerkprogrammierung 3
R Java Applikation als Client ,Servlet als Server: Problem? Netzwerkprogrammierung 3
D Server Socket läuft nicht -> java.net.SocketException: Netzwerkprogrammierung 4
N eigener Java-Server => PHP einbauen Netzwerkprogrammierung 67
S Kommunikation Fortran <-> Java auf Client-Server-Archi Netzwerkprogrammierung 2
S MySQL, PHP, Perl Support in einem Java HTTP Server? Netzwerkprogrammierung 7
D HTTP Apache-HttpClient/UNAVAILABLE (java 1.4) Netzwerkprogrammierung 18
M JAX-WS unter Java 17 plötzlich nicht mehr möglich Netzwerkprogrammierung 5
K Java RMI bricht ab wenn Remote eine Methode ausgeführt werden soll Netzwerkprogrammierung 5
M HTTP Let's Encrypt und Java Trust-Store Netzwerkprogrammierung 6
Tobero Java serversocket nicht nur zuganglich für localhost Netzwerkprogrammierung 6
D path-Variablen in eine URL hinzufügen mit Java 1.8 Netzwerkprogrammierung 2
x46 Java SSLContext erstellen mit SSL-Zertifikat Netzwerkprogrammierung 1
P Jenkins Login per Java Download Manager Netzwerkprogrammierung 15
N Java socket Programmierung Filme verschicken Netzwerkprogrammierung 20
K Java Websocketserver Problem | Android to Pi Netzwerkprogrammierung 1
R Anfängerbeispiel: Suche Java-Anwendung die http-Anfragen in Tomcat liest Netzwerkprogrammierung 8
V Browsergame mit Java(WebSocketServer) als Backend? Netzwerkprogrammierung 5
platofan23 Socket Java Socket mit DynDns nicht erreichbar Netzwerkprogrammierung 6
S Fragen zu Java Webservice mit Axis2 Netzwerkprogrammierung 0
M Mit Java Mail Mails an Webmailer schicken Netzwerkprogrammierung 1
mor16Euro HTTP Php website mit Java aktualisiern Netzwerkprogrammierung 6
T HTTP JAVA Browser Konsolenanfrage(JavaScript) Netzwerkprogrammierung 7
L Socket Wie kann man in Java die Anzahl der Objekte in einem InputStream sehen ohne ihn durchgehen zu müssen Netzwerkprogrammierung 1
M Socket peer to peer Verbindung zwischen Java und Matlab Netzwerkprogrammierung 0
L Remote Desktop per Java steuern Netzwerkprogrammierung 4
J Webserver mit Java schreiben? Netzwerkprogrammierung 4
D JAVA RMI Netzwerkprogrammierung 1
K HTTP Mit Java HTML Codeauslesen um damit zu arbeiten Netzwerkprogrammierung 7
V Kann man mit Hilfe eines Java-Programms den Zugriff auf bestimmte Internetseiten verhinden? Netzwerkprogrammierung 3
J HTTP [Java 9] Neuer HTTP Client - Tutorial Netzwerkprogrammierung 3
A Bestimmter URL/Certificate per Java immer vertrauen (Trustmanager/HostnameVerifier) Netzwerkprogrammierung 1
T VPN-Verbindung über Java Netzwerkprogrammierung 4
M HTTP PATCH Request mit Java ausführen Netzwerkprogrammierung 2
Niggo_ Probleme mit Java Mail Netzwerkprogrammierung 14
L FTP Java Interpreter unterbindet SSL Handshake Netzwerkprogrammierung 2
C IFrame mit java auslesen Netzwerkprogrammierung 1
A FTP wie kann ich von java auf datei in fpt://192.168.178.1 lesen/schreiben? Netzwerkprogrammierung 3
C Datensammlung mit Java RMI Netzwerkprogrammierung 0
K Java Jsoup : OnLoad Netzwerkprogrammierung 0
Carres HTTP Vorhandenen Session-ID Cookie von Firefox, Chrome oder IE in Java verwenden Netzwerkprogrammierung 2
B Java+Grbl: G-Code Befehle mit Java an Arduino senden und lesen Netzwerkprogrammierung 1
Z HTTP HTML Element auslesen in Java Netzwerkprogrammierung 1
T Socket Java Programm hängt sich auf bei dem versuch von einem Socket scanner Daten zu erhalten. Netzwerkprogrammierung 1
Thallius HTTP HTTPS unter Java 1.6 schlägt fehl Netzwerkprogrammierung 4
Thallius Java Application über ZScaler benutzer? Netzwerkprogrammierung 0
P Chat in Java Netzwerkprogrammierung 3
C java.net.ConnectException: Operation timed out? Netzwerkprogrammierung 2
T curl request in java umwandeln Netzwerkprogrammierung 4
I Socket Kommunikation C / Java Netzwerkprogrammierung 2
H Machbarkeitsfrage: TCP/IP Client (z.B. Netty) für Java Web Applcation Netzwerkprogrammierung 1
L Java RMI Objekt konsistenz Netzwerkprogrammierung 1

Ähnliche Java Themen

Neue Themen


Oben