Brauche Hilfe beim fertigstellen eines Chat programms

Reloaded1994

Mitglied
Hey Leute,
Ich bin ein wirklicher Anfänger in Java bin keine Woche dabei doch habe es anhand eines video geschafft einen kleine Chat zu basteln.
Kommen wir zum Problem, ich habe momentan nur zwei classen eine Server.java und ein Client.java
wenn ich die so ausführe funktioniert alles ich komme so gesagt sofort ins Fenster wo ich nachrichten schreiben kann allerdings möchte ich bevor es dazu kommt das ein Fenster auftaucht wo mann sich z.b ein Benutzername aussucht und wenn man dann auf weiter klickt das mann zum Chat weiter geleitet wird.
Kann mir bitte einer helfen ich kenne mich noch nicht so gut aus damit.
und selbst wenn ich denn Command wüste wo sollte ich ihn dann rein schreiben in die Server.java oder in den Client.java



:oops::oops::oops::oops:

Server.java:
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Iterator;
 
public class Server {
 
        ServerSocket server;
        ArrayList<PrintWriter> list_clientWriter;
       
        final int LEVEL_ERROR = 1;
        final int LEVEL_NORMAL = 0;
 
        public static void main(String[] args) {
                Server s = new Server();
                if (s.runServer()) {
                        s.listenToClients();
                } else {
                        // Do nothing
                }
        }
       
        public class ClientHandler implements Runnable {
 
                Socket client;
                BufferedReader reader;
               
                public ClientHandler(Socket client) {
                        try {
                                this.client = client;
                                reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                }
               
                @Override
                public void run() {
                        String nachricht;
                       
                        try {
                                while((nachricht = reader.readLine()) != null) {
                                        appendTextToConsole("Vom Client: \n" + nachricht, LEVEL_NORMAL);
                                        sendToAllClients(nachricht);
                                }
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                }
        }
       
        public void listenToClients() {
                while(true) {
                        try {
                                Socket client = server.accept();
                               
                                PrintWriter writer = new PrintWriter(client.getOutputStream());
                                list_clientWriter.add(writer);
                               
                                Thread clientThread = new Thread(new ClientHandler(client));
                                clientThread.start();
                        } catch (IOException e) {
                                e.printStackTrace();
                        }              
                }
        }
 
        public boolean runServer() {
                try {
                        server = new ServerSocket(5555);
                        appendTextToConsole("Server wurde gestartet!", LEVEL_ERROR);
                       
                        list_clientWriter = new ArrayList<PrintWriter>();
                        return true;
                } catch (IOException e) {
                        appendTextToConsole("Server konnte nicht gestartet werden!", LEVEL_ERROR);
                        e.printStackTrace();
                        return false;
                }
        }
       
        public void appendTextToConsole(String message, int level) {
                if(level == LEVEL_ERROR) {
                        System.err.println(message + "\n");
                } else {
                        System.out.println(message + "\n");
                }
        }
       
        public void sendToAllClients(String message) {
                Iterator it = list_clientWriter.iterator();
               
                while(it.hasNext()) {
                        PrintWriter writer = (PrintWriter) it.next();
                        writer.println(message);
                        writer.flush();
                }
        }
}



Client.java:
Java:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
 
public class Client {
       
        JFrame clientFrame;
        JPanel clientPanel;
        JTextArea textArea_Messages;
        JTextField textField_ClientMessage;
        JButton button_SendMessage;
        JTextField textField_Username;
        JScrollPane scrollPane_Messages;
       
        Socket client;
        PrintWriter writer;
        BufferedReader reader;
       
        public static void main(String[] args) {
                Client c = new Client();
                c.createGUI();
        }
       
        public void createGUI() {
                clientFrame = new JFrame("TutCubeDE-Chat");
                clientFrame.setSize(800, 600);
               
                // Panel erzeugen, welches alle anderen Inhalte enthält
                clientPanel = new JPanel();
               
                textArea_Messages = new JTextArea();
                textArea_Messages.setEditable(false);
               
                textField_ClientMessage = new JTextField(38);
                textField_ClientMessage.addKeyListener(new SendPressEnterListener());
               
                button_SendMessage = new JButton("Senden");
                button_SendMessage.addActionListener(new SendButtonListener());
               
                textField_Username = new JTextField(10);
               
                // Scrollbalken zur textArea hinzufügen
                scrollPane_Messages = new JScrollPane(textArea_Messages);
                scrollPane_Messages.setPreferredSize(new Dimension(700, 500));
                scrollPane_Messages.setMinimumSize(new Dimension(700, 500));
                scrollPane_Messages.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
                scrollPane_Messages.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);              
               
               
                if(!connectToServer()) {
                        // Connect-Label anzeigen ob verbunden oder nicht...
                }
               
                Thread t = new Thread(new MessagesFromServerListener());
                t.start();
               
                clientPanel.add(scrollPane_Messages);
                clientPanel.add(textField_Username);
                clientPanel.add(textField_ClientMessage);
                clientPanel.add(button_SendMessage);
               
                // Panel zum ContentPane (Inhaltsbereich) hinzufügen
                clientFrame.getContentPane().add(BorderLayout.CENTER, clientPanel);
               
                clientFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                clientFrame.setVisible(true);
        }
       
        public boolean connectToServer() {
                try {
                        client = new Socket("127.0.0.1", 5555);
                        reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
                        writer = new PrintWriter(client.getOutputStream());
                        appendTextMessages("Netzwerkverbindung hergestellt");
                       
                        return true;
                } catch(Exception e) {
                        appendTextMessages("Netzwerkverbindung konnte nicht hergestellt werden");
                        e.printStackTrace();
                       
                        return false;
                }
        }
       
        public void sendMessageToServer() {
                writer.println(textField_Username.getText() + ": " + textField_ClientMessage.getText());
                writer.flush();
               
                textField_ClientMessage.setText("");
                textField_ClientMessage.requestFocus();
        }
       
        public void appendTextMessages(String message) {
                textArea_Messages.append(message + "\n");
        }
       
        // Listener
        public class SendPressEnterListener implements KeyListener {
 
                @Override
                public void keyPressed(KeyEvent arg0) {
                        if(arg0.getKeyCode() == KeyEvent.VK_ENTER) {
                                sendMessageToServer();
                        }      
                }
 
                @Override
                public void keyReleased(KeyEvent arg0) {}
 
                @Override
                public void keyTyped(KeyEvent arg0) {}
               
        }
       
        public class SendButtonListener implements ActionListener {
 
                @Override
                public void actionPerformed(ActionEvent e) {
                        sendMessageToServer();                 
                }
               
        }
       
        public class MessagesFromServerListener implements Runnable {
 
                @Override
                public void run() {
                        String message;
                       
                        try {
                                while((message = reader.readLine()) != null) {
                                        appendTextMessages(message);
                                        textArea_Messages.setCaretPosition(textArea_Messages.getText().length());
                                }
                        } catch (IOException e) {
                                appendTextMessages("Nachricht konnte nicht empfangen werden!");
                                e.printStackTrace();
                        }
                }
               
        }
}
 
Zuletzt bearbeitet:

Joose

Top Contributor
Ich bin ein wirklicher Anfänger in Java bin keine Woche dabei doch habe es anhand eines video geschafft einen kleine Chat zu basteln.

Willkommen bei Java :)
Wie man Java lernt kommt auf die Person an, ob Video oder Buch oder Webseiten/PDFs ist egal (wobei ich von Videos nicht so viel halte). Das Problem sehe ich nur wenn man nicht mit den Grundlagen anfängt! Wie der Name schon sagt durch Grundlagen wird es dir möglich auch fremden Code zu verstehen ohne diese auszuführen.

Was sagen dir Begriffe wie Vererbung, abstrakte Methoden, Methodensignatur, Konstruktoren, ...?

Außerdem ist der Code der durch das Video vermittel zwar richtig, aber keine schöne Programmierung!

Kann mir bitte einer helfen ich kenne mich noch nicht so gut aus damit.
und selbst wenn ich denn Command wüste wo sollte ich ihn dann rein schreiben in die Server.java oder in den Client.java

Naja :rtfm: ein Client läuft Clientseitig, der User/Client soll sich normalerweise einloggen, in welche Klasse sollte also der Code?

Bevor du dich mit GUI, Server/Client Sachen und Threading herumschlägst solltest du dir die Grundlagen aneignen und mit simplen Konsolenprogrammen anfangen ....
 

Chloroplast

Bekanntes Mitglied
ich finde zum einstieg applets ganz nuetzlich, gerade für menschen die sich (noch) wenig unter dem programm an sich vorstellen können. da kann man dann sehr einfach über die paint methode eigene kreationen auf den bildschirm pinnen. Ich erinner mich noch wie mein lehrer mir als erstes die aufgabe gab ein schachbrett mit zwei for-schleifen zu basteln *_*
 

Joose

Top Contributor
.... gerade für menschen die sich (noch) wenig unter dem programm an sich vorstellen können. da kann man dann sehr einfach über die paint methode eigene kreationen auf den bildschirm pinnen. ....

Und wenn man viele dieser Menschen dann fragt: Warum macht das Programm das und das, und warum wird diese paint-Methode aufgerufen etc. dann wissen viele nicht wie wann wo was warum.
In Mathematik fangt man auch nicht Differenzialgleichungen bzw. Wahrscheinlichkeitsrechnung an ;)
 

Reloaded1994

Mitglied
Hab das fester jetzt hinbekommen ( mehr oder weniger) und ihr habt recht zwar weis ich die befehle wie man ein Fenster erzeugt, allerdings warst das auch hab mir jetzt das buch Java ist auch eine Insel geholt und werde einfach anhand daran
erst mal lernen und sich mit kleineren Sachen beschäftigen


Danke für alle die so schnell geantwortet haben ;)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
L Brauche Hilfe beim arbeiten mit Konstruktoren Java Basics - Anfänger-Themen 20
S brauche hilfe beim fehler finden Java Basics - Anfänger-Themen 2
C Brauche dringend hilfe beim exception im code Java Basics - Anfänger-Themen 5
T brauche HILFE beim Junit test:eek: Java Basics - Anfänger-Themen 11
Y Brauche Hilfe beim Programm Java Basics - Anfänger-Themen 83
M Brauche Hilfe beim Verstehen vom Quellcode Java Basics - Anfänger-Themen 4
V Brauche Hilfe beim Programmieren Java Basics - Anfänger-Themen 3
V Brauche Hilfe beim Programmieren Java Basics - Anfänger-Themen 9
S brauche hilfe beim dateien kopieren / bearbeiten Java Basics - Anfänger-Themen 3
E brauche hilfe beim KeyListener Java Basics - Anfänger-Themen 4
K Brauche Hilfe beim Programmieren eines Funktionsplotters Java Basics - Anfänger-Themen 3
B Brauche Hilfe zu einem Code Java Basics - Anfänger-Themen 5
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
H Brauche Hilfe Java Basics - Anfänger-Themen 2
H Brauche hilfe Java Basics - Anfänger-Themen 3
C Brauche Hilfe um ein Programm zu schreiben Java Basics - Anfänger-Themen 8
Leo0909 Ich brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 2
H Brauche Hilfe in Java Eclipse Programmieraufgabe Neuling Java Basics - Anfänger-Themen 3
D Brauche Dringend Hilfe...Prozedur/Funktionsprozedur Ergebnis augeben Java Basics - Anfänger-Themen 11
I Brauche Hilfe bei Objektorientiertem programmieren Java Basics - Anfänger-Themen 23
M Brauche Hilfe bei If-Scheifen Java Basics - Anfänger-Themen 2
F ich brauche Hilfe bei Listen Java Basics - Anfänger-Themen 13
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
E Ich Brauche Hilfe Java Basics - Anfänger-Themen 3
J Brauche Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 1
S Brauche hilfe in Java [Fehler in mein Code]? Java Basics - Anfänger-Themen 2
B BITTE!! Ich brauche dringende Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 17
TpKey10 Ich brauche Hilfe Java Basics - Anfänger-Themen 14
F Ich brauche Hilfe bei Objektorientierter Programmierung... Java Basics - Anfänger-Themen 19
L Input/Output Wurzelzeichen in der Konsole ausgeben | Brauche Hilfe Java Basics - Anfänger-Themen 6
J Brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 3
T Brauche Hilfe um ein Programm zu verstehe Java Basics - Anfänger-Themen 4
C Ich brauche hilfe für meine Klausur Java Basics - Anfänger-Themen 13
J Brauche Hilfe !! Java Basics - Anfänger-Themen 8
R Spielfeldbegrenzung einfügen (Java)? Brauche Hilfe! Java Basics - Anfänger-Themen 15
C Brauche dringend Hilfe. Umfrage mit ja und nein in Java erstellen? Java Basics - Anfänger-Themen 12
U Brauche Hilfe bei Programmierung einer Produktdatenbank App Java Basics - Anfänger-Themen 4
P Brauche Hilfe bei ResultSet mit MySQL Java Basics - Anfänger-Themen 6
T Datentypen Brauche Hilfe bei Arrays Java Basics - Anfänger-Themen 3
U Brauche Hilfe bei Bisektionsverfahren Java Basics - Anfänger-Themen 23
E Erste Schritte brauche hilfe zum verstehen einer Klasse(Tiefensuche) Java Basics - Anfänger-Themen 17
I Brauche Hilfe bei Schleifen Java Basics - Anfänger-Themen 18
B Java Graphen zeichnen - Brauche Hilfe Java Basics - Anfänger-Themen 9
S brauche hilfe bei Fehlersuche Java Basics - Anfänger-Themen 7
M JDK installieren Brauche dringend Hilfe Java Basics - Anfänger-Themen 2
L Brauche Hilfe bei Preisberechnungspogramm Java Basics - Anfänger-Themen 1
D Hilbert und Peano Kurve, ich brauche Hilfe Java Basics - Anfänger-Themen 4
S Brauche hilfe bei Pong (JFrame) Java Basics - Anfänger-Themen 2
V Hilfe-brauche eine Idee! Java Basics - Anfänger-Themen 5
A Erste Schritte Brauche Hilfe Java Basics - Anfänger-Themen 2
D Brauche Hilfe für mein übungsprogramm Java Basics - Anfänger-Themen 16
S Klassen Brauche Hilfe bei Erstellung einer Klasse für einen Tachenrechner!!! Java Basics - Anfänger-Themen 6
W Brauche hilfe bei Hausübung Java Basics - Anfänger-Themen 10
D Brauche Hilfe bei Modulo (Übungsaufgabe) Java Basics - Anfänger-Themen 14
X Brauche Hilfe bei printOnScreen Methode !!! Java Basics - Anfänger-Themen 2
H mysql brauche hilfe, wer kann eine (längere) aufgabe für mich erledigen Java Basics - Anfänger-Themen 2
K Erste Schritte Brauche Hilfe bei Starten des Programms Java Basics - Anfänger-Themen 11
B Erste Schritte HILFE Brauche ein Beispiel für korrekte Syntax mit Semantikfehlern Java Basics - Anfänger-Themen 6
H Java von Kopf bis Fuß: Brauche Hilfe Java Basics - Anfänger-Themen 6
B Erste Schritte Brauche Hilfe bei einem Java-Taschenrechner Java Basics - Anfänger-Themen 11
S Erste Schritte BlueJ-Aufgabe: Programmcode / Brauche dringend Hilfe !!! Java Basics - Anfänger-Themen 37
A Brauche Hilfe bei Division von Feldzahl durch Ganzzahl Java Basics - Anfänger-Themen 3
F Java-Anfänger, brauche Hilfe Java Basics - Anfänger-Themen 3
F Java-Anfänger, brauche Hilfe Java Basics - Anfänger-Themen 2
G Brauche bitte Hilfe, bei umgekehrter Ausgabe!! Java Basics - Anfänger-Themen 6
B Erste Schritte Brauche Hilfe für ein UML Diagramm Java Basics - Anfänger-Themen 7
S ICh brauche Hilfe,weil Java in der Schule Java Basics - Anfänger-Themen 11
B Brauche Hilfe mit Aufgaben mit dem JavaEditor Java Basics - Anfänger-Themen 8
I Primzahlenberechnung [Brauche Hilfe] Java Basics - Anfänger-Themen 5
F Reader - brauche Hilfe Java Basics - Anfänger-Themen 19
T Brauche Hilfe bei Variabeln Java Basics - Anfänger-Themen 4
J Brauche Hilfe mit replaceFirst Java Basics - Anfänger-Themen 10
M Brauche Hilfe bei Struktogramm Java Basics - Anfänger-Themen 9
T Datentypen brauche dringende hilfe!dezi in Asci umwandeln! Java Basics - Anfänger-Themen 4
X DB4O Collections and Arrays, brauche dringend Hilfe! Java Basics - Anfänger-Themen 3
B brauche hilfe bei funktion erstellen Java Basics - Anfänger-Themen 8
S Brauche Hilfe bei if/else Java Basics - Anfänger-Themen 3
N Brauche Hilfe mit Kollisionserkennung! Java Basics - Anfänger-Themen 16
J Brauche Hilfe bei Methode Java Basics - Anfänger-Themen 9
G 2 dim. Strsing Arrays brauche Hilfe Java Basics - Anfänger-Themen 20
A Brauche hilfe String untertrennen Java Basics - Anfänger-Themen 12
L Brauche bitte dringend Hilfe für Klausur Java Basics - Anfänger-Themen 8
H Brauche bei einen bsp hilfe! Java Basics - Anfänger-Themen 2
D Währungsrechner brauche Hilfe Java Basics - Anfänger-Themen 10
R Vokabeltrainer / Brauche Hilfe Java Basics - Anfänger-Themen 8
L Brauche Hilfe! Java Basics - Anfänger-Themen 8
S WAV-DATEIEN INTERPRETIEREN UND UMWANDELN Brauche Hilfe Java Basics - Anfänger-Themen 3
A Brauche Hilfe mit einer Forschleife Java Basics - Anfänger-Themen 20
N brauche Hilfe Stringverarbeitung Java Basics - Anfänger-Themen 9
JeromeM90 (Brauche Hilfe) Binär- in Dezimalzahlkonverter Java Basics - Anfänger-Themen 8
M Brauche Hilfe bei Javaapplication für JuFo Java Basics - Anfänger-Themen 21
A brauche hilfe ( gpanel und n-ecke) Java Basics - Anfänger-Themen 11
S Brauche Hilfe mit waitFor() Java Basics - Anfänger-Themen 4
N Brauche dringende Hilfe Java Aplett läuft nicht! Java Basics - Anfänger-Themen 3
D Brauche Hilfe: Funktion zum Kombinieren von Werten Java Basics - Anfänger-Themen 5
T Brauche Hilfe: Access DB + Hashmap Java Basics - Anfänger-Themen 2
N brauche hilfe zu tictactoe Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben