Socket Fehler bei Streams

N

Niki564

Gast
Hey Leute, wir müssen für die Schule irgendein Javaprojekt machen. Ich habe mich für ein Netzwerkfähiges Pokerspiel entschieden.
Zuerst wählt man aus ob man eine Lobby erstellen oder einer beitreten möchte. Beim erstellen gibt man noch den Servername ein und dann wartet man mit serverSocket.accept() auf ein Verbindung. Beim beitreten muss man nur den Spielername und IP des Servers eingeben. Danach wird eine Verbindung mit dem Server hergestellt und man sendet ihm zuerst den Spielername. Danach werden Infos in einem bestimmten Format vom Server zurückgegeben. Danach wird im Server der Socket zum Client in einer Liste gespeichert.
Hier der Code für den Server:
Java:
        Thread connect = new Thread()
        {
            @Override
            public void run()
            {
                while(true)
                {
                    try
                    {
                        joiner = connecter.accept();
                        BufferedReader reader = new BufferedReader(new InputStreamReader(joiner.
                            getInputStream()));
                        PrintWriter writer = new PrintWriter(joiner.
                            getOutputStream());
                        String gName = reader.readLine();
                        for(Socket s : clients)
                        {
                            PrintWriter out = new PrintWriter(s.getOutputStream());
                            System.out.println("Lobby: println");
                            out.println(gName);
                            System.out.println("Lobby: println done");
                        }
                        clients.add(joiner);
                        opss.add(writer);
                        addGamerName(gName);                                                     //Fügt den Spieler in die JList hinein
                        writer.println(lob.toString());
                        writer.flush();
                    } catch(IOException ex)
                    {
                        Logger.getLogger(Lobby.class.getName()).
                            log(Level.SEVERE, null, ex);
                    }
                }
            }
        };
        connect.start();

Hier der Code beim beitreten der Loby
Java:
String name = txtName.getText(), lobbyIP = txtLobbyIP.
                        getText();
                    if(name.equals("") || lobbyIP.equals(""))
                    {
                        JOptionPane.showMessageDialog(pf, "Alle Felder müssen ausgefüllt werden");
                        return;
                    }
                    String info = null;
                    try
                    {
                        socket = new Socket(txtLobbyIP.getText(), PokerFrame.PORT);
                        ops = socket.getOutputStream();
                        PrintWriter writer = new PrintWriter(ops);
                        ips = socket.getInputStream();
                        BufferedReader reader = new BufferedReader(new InputStreamReader(ips));
                        writer.println(txtName.getText());
                        writer.flush();
                        info = reader.readLine();
                    } catch(UnknownHostException ex)
                    {
                        Logger.getLogger(LobbyJoiner.class.getName()).
                            log(Level.SEVERE, null, ex);
                    } catch(IOException ex)
                    {
                        Logger.getLogger(LobbyJoiner.class.getName()).
                            log(Level.SEVERE, null, ex);
                    }
                    String[] infos = info.split(";");
                    LobbyPane lobby = new LobbyPane(infos[0], Integer.parseInt(infos[1]), infos[2], infos[3].
                        split("/"));
                    pf.setContentPane(lobby);

Und noch die ClientLobby wenn sich jemand zum Server connected, dass der Server allen anderen Clients den neuen Spieler ebenfalls sendet

Java:
Thread t = new Thread(new Runnable()
            {
                public void run()
                {
                    while(true)
                    {
                        try
                        {
                            System.out.println("Client: create reader");
                            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); /*beim Lobby erstellen wird der Socket zum Server mitgegeben, dies ist der <socket>*/
                            String cmd = in.readLine();
                            System.out.println("Client: readLine done");
                            listModel.addElement(cmd);
                            gamerName.add(cmd);
                        } catch(IOException ex)
                        {
                            Logger.getLogger(PokerFrame.class.getName()).
                                log(Level.SEVERE, null, ex);
                        }
                    }
                }
            });
            t.start();
Der Fehler ist jetzt, dass die bereits erstellte Clientlobby keine Infos mehr vom Server bekommt, obwohl der Server an allen Clients den neuen Spielernamen schickt. Ich haba keine Ahnung warum das so ist, und hoffe jemand kann mir weiterhelfen!

lg Niki
 

Michael...

Top Contributor
Ganz schon ambitioniert ein netzwerkfähiges Pokerspiel als Schulprojekt zu programmieren.

Ich nehme mal an die Kommunikation via Socket wurde in der Schule behandelt!?

Warum wird denn im dritten Codeausschnitt der Reader jedesmal neu erstellt, nachdem eine Zeile eingelesen wurde? Ausserdem existiert ja noch der Reader auf den InputStream aus Codeabschnitt 2 oder woher kommt das socket in Code 3?
 
N

Niki564

Gast
Nein leider haben wir dies noch nicht im unterricht durchgenommen

Zur Frage mit den Sockets: Ich habe es ein wenig kompliziert programmiert. Ich habe in meiner Hauptklasse innere Klassen von z.B. Lobby oder LobbyJoiner und dabei die Events in der Hauptklasse. Und in meiner Hauptklasse befindet sich das Socket Objekt
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Threads/Server/telnet Fehler Netzwerkprogrammierung 2
X Netty TLS Authentifizierung Fehler Netzwerkprogrammierung 1
OnDemand API Aufruf besser steuern, wie Fehler vermeiden Netzwerkprogrammierung 20
V Ich finde den Fehler nicht... Netzwerkprogrammierung 2
A sporadischer Fehler beim Schreiben auf NAS Netzwerkprogrammierung 2
K Socket Netty Client wirft Fehler! Netzwerkprogrammierung 3
F HTTP Website parsen Fehler 403 Netzwerkprogrammierung 2
M Socket Verschlüsselte Kommunikation - Fehler Netzwerkprogrammierung 1
M Wo ist mein Fehler ? o: Netzwerkprogrammierung 4
D Komischer Fehler Readline() Netzwerkprogrammierung 7
CookieSoft Fehler bei Socket Netzwerkprogrammierung 4
B RMI & Mysql -> Fehler bei der Compilierung Netzwerkprogrammierung 4
C Fehler bei PDF-Download Netzwerkprogrammierung 5
M ActiveMQ Anfänger-Fehler Netzwerkprogrammierung 3
F Socket ImageIcon über Socket --> Fehler Netzwerkprogrammierung 14
M chat als applet umgeschrieben - unbekannter fehler :( Netzwerkprogrammierung 2
B Socket Daten empfangen funktioniert nicht richtig - wo liegt der Fehler? Netzwerkprogrammierung 7
L NullPointerException...finde den Fehler nicht Netzwerkprogrammierung 10
E einfache Frage: wie Fehler untersuchen mit Tomcat Netzwerkprogrammierung 5
R Fehler bei RMI in Verbidung mit JDBC Netzwerkprogrammierung 6
L RMI Programm beendet ohne Fehler sofort nach Start (Windows 2000) Netzwerkprogrammierung 7
R Server - Client - Fehler? Netzwerkprogrammierung 3
M SOAP Messaging Fehler Netzwerkprogrammierung 10
J RMI Fehler beim Proxy Netzwerkprogrammierung 2
B Fehler 401 bei http GET Netzwerkprogrammierung 2
H RMI Fehler: access denied Netzwerkprogrammierung 10
J Vom BufferedReader lesen -> hängt ohne Fehler,ohne Except Netzwerkprogrammierung 2
C irc client: Fehler 451 Netzwerkprogrammierung 12
G Heimnetzwerkchatprogramm: Fehler im Code Netzwerkprogrammierung 11
M Verständnisfrage zu den Streams Netzwerkprogrammierung 7
J Threads & Streams Netzwerkprogrammierung 9
N Paket-Analysieren Byte-Streams Netzwerkprogrammierung 12
C Socket Cipher Streams Netzwerkprogrammierung 6
E Verfügbarkeit von Daten in Streams Netzwerkprogrammierung 4
V HTTP Streams setzen Netzwerkprogrammierung 10
1 SSH-Kommunikation - Ende eines Streams nicht erkenntlich Netzwerkprogrammierung 2
D Socket Streams schliessen .. Exception gewollt? Netzwerkprogrammierung 4
B Server mit meheren Streams/Aufgaben? Netzwerkprogrammierung 9
H RMI RPC "not suitable for streams and.." Netzwerkprogrammierung 2
T HTTP Encoding von Http-Streams Netzwerkprogrammierung 2
L mehrere Streams über einen Socket? Netzwerkprogrammierung 8
V Mehrere Streams durch einen Stream senden Netzwerkprogrammierung 14
M Streams verwenden Netzwerkprogrammierung 3
A Streams per RMI übergeben Netzwerkprogrammierung 6
P problem beim schließen eines Streams Netzwerkprogrammierung 6
K Selbe Streams mehrfach nutzen (zusätl. Thread) Netzwerkprogrammierung 6
J while-Schleife / Abbruchbed. beim Einlesen eines Streams Netzwerkprogrammierung 4
J Länge eines Streams Netzwerkprogrammierung 4
M Streams Bündeln Netzwerkprogrammierung 10
P Probleme mit Input- / Output-Streams Netzwerkprogrammierung 2
M Ende des Streams ohne Schließen/Checksumme mitsenden Netzwerkprogrammierung 2
M Probleme beim Abfangen von Streams Netzwerkprogrammierung 5
8 Socket Streams nur mit Byte? Netzwerkprogrammierung 2
E frage zu streams Netzwerkprogrammierung 2
F ResultSet in Streams Netzwerkprogrammierung 8
C IRC CHAT auslesen -> Sockets/input und output Streams Netzwerkprogrammierung 9

Ähnliche Java Themen


Oben