Chat-Client empfängt nichts vom Server

ingobar

Mitglied
Hallo zusammen,

ich soll hier in der Schule eine Chat-Client/Server Konstellation programmieren und komme nicht weiter. Mein Problem ist, dass der Client nichts vom Server empfängt. Nur die Meldung, dass es geklappt hat wird noch angezeigt, aber das wars.

Hier also erst mal der Code des Clients (nur was die Kommunikation anbelangt):
Java:
public class ChatClient {
    //Lesen vom Server
    JTextArea vomServer;
    //Schreiben zum Server
    JTextField zumServer;   
    PrintWriter writer;
    //Verbindung
    Socket sock;
    
    public static void main(String[] args) {
        ChatClient client = new ChatClient();
        client.los();
    }
    
    public void los() {
        //Fenster mit Darstellungsbereich
        
        //Verbindung aufbauen
        netzwerkEinrichten();

        //Das regelmäßige Abrufen des Servers in einen 
        //eigenständigen Prozess (Thread) auslagern
        Thread readerThread = new Thread(new ServerHandler(this));
        readerThread.start();
    }
    
    private void netzwerkEinrichten() {  
        try {
            sock = new Socket("127.0.0.1", 5000);
            writer = new PrintWriter(sock.getOutputStream());
            writer.println("Client 1 möchte mitmachen.");
            writer.flush();
            System.out.println("Netzwerkverbindung steht");
        } catch(IOException ex) {
            ex.printStackTrace();
        }
    }
    
    public void serverAntwort(String nachricht) {
        vomServer.append(nachricht);
    }
    
    public class SendenButtonListener implements ActionListener {
        public void actionPerformed(ActionEvent ev) {
            try {
                writer.println(zumServer.getText());
                writer.flush();
            } catch(Exception ex) {
                ex.printStackTrace();
            }
            zumServer.setText("");
            zumServer.requestFocus();
        }
    }
}

Das Empfangen geschieht dann in folgendem Thread:
Java:
class ServerHandler implements Runnable {
    BufferedReader readerVomServer;
    ChatClient myClient;
    
    ServerHandler(ChatClient newClient) {
        myClient = newClient;
        try {
            readerVomServer = new BufferedReader(new InputStreamReader(myClient.sock.getInputStream()));
        } catch (Exception ex) {
            System.out.println("BufferedReader konnte nicht aufgebaut werden.");
            ex.printStackTrace();
        }
    }
    
    public void run() {
        String message;
        while (true) {
            try {
                while ((message = readerVomServer.readLine())  != null) {
                    System.out.println(">"+message+"< anhängen");
                    myClient.serverAntwort(message); //Anzeigen der Nachricht
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }
}

So, jetzt noch der Servercode:

Java:
public class ChatServer {
    ArrayList<PrintWriter> clientAusgabeStroeme;
    
    public static void main (String[] args) {
        new ChatServer().los();
    }
    
    public void los() {
        clientAusgabeStroeme = new ArrayList<PrintWriter>();
        
        //warten auf Verbindungsanforderung
        try {
            ServerSocket serverSock = new ServerSocket(5000);
            
            while(true) {
                //Verbindung akzeptieren
                Socket clientSocket = serverSock.accept();
                //Den Ausgabestrom zum Client definieren...
                PrintWriter writer = new PrintWriter(clientSocket.getOutputStream(), true);  
                //Bestätigung zurück schicken !!!!!!!!!!!!!!!! Diese Nachricht wird noch angezeigt !!!!!!!!!!!!!!!!!!!!
                writer.println("Anmeldung hat geklappt");
                writer.flush();
                //...und merken
                clientAusgabeStroeme.add(writer);
                
                Thread t = new Thread(new ClientHandler(clientSocket, this));
                t.start();
                System.out.println("Habe eine neue Verbindung");
            }
        }catch(Exception ex) {
            ex.printStackTrace();
        }
    }
    
    public void esAllenWeitersagen(String nachricht) {
        Iterator it = clientAusgabeStroeme.iterator();
        System.out.print(">"+nachricht+"< wird geschickt an: Client ");
        int i=1;
        while(it.hasNext()) {
            try {
                System.out.println(i++);
                PrintWriter writer = (PrintWriter) it.next();
                writer.print(nachricht);
                writer.flush();
            } catch(Exception ex) {
                ex.printStackTrace();
            }
        }    
}

Und auch hier noch der Thread, der für jeden Client erstellt wird

Java:
public class ClientHandler implements Runnable {
		BufferedReader vomClient;
		SehrEinfacherChatServer myServer;
		
		public ClientHandler(Socket clientSocket, SehrEinfacherChatServer curServer) {
			try {
				myServer = curServer;
				vomClient = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
			} catch(Exception ex) {
			    ex.printStackTrace();
			 }
		}
		
		public void run() {
			String nachricht;
			
			try {
				while ((nachricht=vomClient.readLine())!= null) {
					System.out.println("gelesen: " + nachricht);
					myServer.esAllenWeitersagen(nachricht);
				} 
			} catch(Exception ex) {
			    ex.printStackTrace();
			 }
		}
	}

Ich bin mir halt gar nicht sicher, an welcher Stelle das Problem auftritt: List der Server auch wirklich alles, verschickt er wirklich alles (Laut System.out tut er das nämlich) oder empfängt der Client nichts. Vielleicht liegt es auch daran, dass BlueJ das so nicht zu lässt. Ich habe zwar für Server und Client ein eigenes Projekt angelegt, aber wer weiß...

Kann mir also jemand irgendwie helfen?

Danke,

Ingo
 

eRaaaa

Top Contributor
Also da sind so einige Dinge fragwürdig.
a)SehrEinfacherChatServer - was ist das? Du meinst wohl nur ChatServer oder? Dann abändern im CHandler
b)bekommst du eine NullpointerException, weil deine JTextArea überhaupt nicht instanziiert wird
c)vomServer.append(nachricht); siehe b) + was soll`s bringen ohne Fenster? :)
Ändere das erstmal ab und benutze nur die Konsole, wenn das ordentlich klappt, kannst du auf GUI umbauen:
[c]System.out.println("Nachricht: "+nachricht);[/c] an dieser Stelle, liefert bei mir zumindest keine Exception und die Ausgabe "Nachricht: Anmeldung hat geklappt".
 

ingobar

Mitglied
Hallo,

ich habe das jetzt versucht, aber leider regiert der Client immer noch nicht. Er scheint nichts zu empfangen. Warum weiß ich nicht.

Noch eine Idee?

Ingo
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
D Chat Server/mehre Client Netzwerkprogrammierung 9
M Socket Chat-Client-Problem Netzwerkprogrammierung 8
AMStyles Client Server basierter Chat Netzwerkprogrammierung 7
S Client-Server Chat Problem nur im lokalen Netztwerk Netzwerkprogrammierung 23
DamienX Chat Socketserver/Client. wo ist das Problem? Netzwerkprogrammierung 2
J Client-Client-Chat ohne Serverbeteiligung Netzwerkprogrammierung 2
T Chat-Client Netzwerkprogrammierung 12
S RMI Chat Problem, Client bekannt machen Netzwerkprogrammierung 2
S JAV07P SGD client/server chat Netzwerkprogrammierung 4
L Chat Fenster Netzwerkprogrammierung 1
J Socket Ein Chat Server Tutorial Netzwerkprogrammierung 8
S Java Chat Server Netzwerkprogrammierung 8
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
P Chat in Java Netzwerkprogrammierung 3
C Java Chat Admin Kenzeichnung Netzwerkprogrammierung 14
Androbin Socket Fehlerhafter Applet-Chat Netzwerkprogrammierung 12
C Microsoft Comic Chat Netzwerkprogrammierung 0
G Socket Socket verbindung für Chat System Netzwerkprogrammierung 3
O Chat (Server) sendet an verschieden Benutzer. Netzwerkprogrammierung 10
J Chat programmieren Netzwerkprogrammierung 12
L Chat Server programmieren Netzwerkprogrammierung 10
TheJavaKid Webcam-Chat im Applet (ChatRoulette Klon) Netzwerkprogrammierung 10
H Socket Java Chat - Verbindung zum Server fehlgeschlagen. Netzwerkprogrammierung 5
K Socket Chat-GUI eigenes Event nach Empfangen Netzwerkprogrammierung 2
K chat Netzwerkprogrammierung 13
F RMI einfacher Chat - Callbacks(?) funktionieren nicht Netzwerkprogrammierung 7
L Socket Chat funktioniert nicht Netzwerkprogrammierung 2
T Socket Java Chat Netzwerkprogrammierung 2
xDarkSunx Chat JFrame Netzwerkprogrammierung 3
xDarkSunx Hilfe Chat Login Netzwerkprogrammierung 7
E JAVA Chat Netzwerkprogrammierung 19
C Java Chat funktioniert nicht richtig Netzwerkprogrammierung 6
A Socket UDP Chat Verbindungsproblem im WWW (Server sendet ins leere) Netzwerkprogrammierung 11
A Multi-User-Chat Netzwerkprogrammierung 2
E Userliste für Chat Applet Netzwerkprogrammierung 4
L Socket Chat Server für mehrere Clients Netzwerkprogrammierung 7
J Framework/ Muster für Chat-ähnliches Programm gesucht Netzwerkprogrammierung 2
M chat als applet umgeschrieben - unbekannter fehler :( Netzwerkprogrammierung 2
P Socket Chat selbst bauen + Multiusereditor Netzwerkprogrammierung 13
T Java Chat über UDP Netzwerkprogrammierung 7
Developer_X Habe fragen zur Chat Programmierung Netzwerkprogrammierung 4
P Java Multiuser Chat hohe Systemauslastung Netzwerkprogrammierung 24
D Hilfe ich komme bei meinem UDP chat Server nicht mehr weiter Netzwerkprogrammierung 9
B Die alte Leier: "Chat" Netzwerkprogrammierung 3
M chat funktioniert nicht (Connection refused: connect) Netzwerkprogrammierung 3
R Java-Chat-Applet funktioniert nur in Eclipse Netzwerkprogrammierung 3
A Wichtig für einen Chat? Netzwerkprogrammierung 4
S Java Applet Chat Grundsatzfrage Netzwerkprogrammierung 6
R Java Chat über Inet connecten Netzwerkprogrammierung 3
F Chat Programm. Verständnisfrage while-Schleife Netzwerkprogrammierung 7
P Probleme bei Chat programm Netzwerkprogrammierung 2
C Voice Chat Netzwerkprogrammierung 3
G FAQ Chat geht nicht ? Netzwerkprogrammierung 4
T Schriftfarbe im Chat ändern Netzwerkprogrammierung 2
G ActionEvent klappt beim Chat nicht Netzwerkprogrammierung 5
J Kleines Problem mit Chat Server Netzwerkprogrammierung 2
G Chat zwischen applets: möglich? Netzwerkprogrammierung 2
T Chat mit mehreren Clients Netzwerkprogrammierung 3
C Chat , Streamproblem, PumpingException, Danke Netzwerkprogrammierung 2
V probleme mit dem chat programm Netzwerkprogrammierung 4
K Lokaler Chat Netzwerkprogrammierung 5
S Chat aufs Internet ausweiten Netzwerkprogrammierung 5
J Router behindert Chat Netzwerkprogrammierung 9
S Knuddels Chat System: Bot / Nachrichten verschicken? Netzwerkprogrammierung 6
G Chat - was brauch ich Netzwerkprogrammierung 2
André B. Brauche Hilfe bei Chat Netzwerkprogrammierung 6
K Problem mit "Chat" Netzwerkprogrammierung 2
N Java-Chat (lauffähig) macht Probleme auf der Konsole Netzwerkprogrammierung 6
Paule Acces denied bei Chat Netzwerkprogrammierung 6
B Multi-chat Problem Netzwerkprogrammierung 3
N Java Chat-Problem Netzwerkprogrammierung 4
G Java Chat mit HTML Cleint Netzwerkprogrammierung 3
G Chat Programm - was ist los? Netzwerkprogrammierung 9
A server mit 2 Ports : Mit und ohne SSL Chat system Netzwerkprogrammierung 10
Z chat: wann http und wann sockets verwenden? Netzwerkprogrammierung 11
M Socket Verbindungen für einen Chat Netzwerkprogrammierung 10
R Mini-Chat löst BindException aus Netzwerkprogrammierung 7
F Multiclient Chat Netzwerkprogrammierung 12
K Chat: Nur 1 Verbindung zum Server möglich :( Netzwerkprogrammierung 6
K Chat: Verbindung kommt nicht zu stande Netzwerkprogrammierung 6
C IRC CHAT auslesen -> Sockets/input und output Streams Netzwerkprogrammierung 9
S Einfacher Multiuser chat in java Netzwerkprogrammierung 18
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
L Socket Automatische Zuweisung von Server und Client Rolle Netzwerkprogrammierung 12
ExceptionOfExpectation Server/Client-Kommunikation Netzwerkprogrammierung 34
M Server-Client-System für Browsergame Netzwerkprogrammierung 5
B Axis2 Webservice mit Client Zertifikat Authentifizierung Netzwerkprogrammierung 3
Yonnig Threads mit Client/Server und GUI (laufend bis button-click) Netzwerkprogrammierung 9
T Jetty mit Client-Zertifikat nur bei spezifischer URL Netzwerkprogrammierung 1
J Einlesen von Servernachrichten von TCP-Client Netzwerkprogrammierung 17
J Client-Server und SOAP Netzwerkprogrammierung 23
L30nS RMI Aufruf einer Client-Methode von einem RMI-Server Netzwerkprogrammierung 3
T String von Client zu Server kommt nicht an Netzwerkprogrammierung 92
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
D Server - Client Informationsaustausch, Möglichkeiten Netzwerkprogrammierung 3
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
T Client zu Client Kommunikation Netzwerkprogrammierung 2
D Slf4j - Logging - Client-Server Architektur Netzwerkprogrammierung 3
J client server mit nur einem PC Netzwerkprogrammierung 33

Ähnliche Java Themen

Neue Themen


Oben