Chat: Nur 1 Verbindung zum Server möglich :(

Status
Nicht offen für weitere Antworten.

KSG9|sebastian

Top Contributor
Hi Leute, ich hab bei meinem "Chat" grade das Problem, dass ich nur mit einem Client drauf connecten kann. Sobald ich den Client zum 2. Mal starte läuft er, aber er schickt nichts mehr und dann bekomm ich nen Read-Timeout. Hier der Code:

Server:

Code:
package chatserver;
import java.io.*;
import java.net.*;
import java.lang.Runnable;
import java.util.Vector;

public class ServerTool implements Runnable{
    private Socket sock;
    private ServerSocket serversock;
    private InputStream input;
    private OutputStream output;
    private BufferedReader reader;
    private PrintWriter writer;
    private Thread thr;
    private Vector clients;
    private int users;
    private int port;
    public ServerTool() {
           System.out.println("Server läuft");
           users = 0;
           port = 1337;
           clients = new Vector();
           thr = new Thread(this);
           thr.start();
    }
    public ServerTool(int port) {
           System.out.println("Server läuft");
           users = 0;
           this.port = port;
           clients = new Vector();
           thr = new Thread(this);
           thr.start();
    }
    public void run(){
           while(!thr.isInterrupted()){
            try{
                serversock = new ServerSocket(port);
                sock = serversock.accept();
                System.out.println("Neuer Client angemeldet...");
                sock.setKeepAlive(true);
                sock.setSoTimeout(300);
                clients.add(new ClientThreads(sock));
                users++;
                try{
                    Thread.sleep(100);
                }
                catch(InterruptedException e){
                    e.printStackTrace();
                    thr.interrupt();
                }
            }
            catch(IOException e){
                e.printStackTrace();
                thr.interrupt();

            }


           }
    }
    public static void main(String[] args){
        new ServerTool(1339);
    }


}

Client-Threads(behandelt die Verbindungen zu den Clients):

Code:
package chatserver;
import java.io.*;
import java.net.*;
public class ClientThreads extends Thread{
    private static int number;
    private Socket sock;
    private BufferedReader reader;
    private PrintWriter writer;
    private int fehler_count;
    public ClientThreads(Socket sock) {
           fehler_count = 0;
           number = 0;
           this.sock = sock;
           this.start();
    }
    public void run(){
           while(!this.isInterrupted()){
           try{
               writer = new PrintWriter(sock.getOutputStream(),true);
               reader = new BufferedReader(
                new InputStreamReader(sock.getInputStream()));
               String text = reader.readLine();
               System.out.println(text);
               writer.write("PING\r\n");
               writer.flush();
               try{
                   Thread.sleep(100);
               }catch(InterruptedException e){
                    e.printStackTrace();
                    this.interrupt();
                    this.destroy();
                    System.out.println("Client disconnected...");

               }
           }catch(IOException e){
               e.printStackTrace();
               this.interrupt();
           }
           }

    }


}

Client:
Code:
package ChatClient;
import java.io.*;
import java.net.*;
import java.lang.Runnable;
import java.lang.Thread;

public class ClientTool implements Runnable{
    private Socket sock;
    private InputStream input;
    private OutputStream output;
    private BufferedReader reader;
    private PrintWriter writer;
    private Thread thr;
    public ClientTool(){
           System.out.println("Client läuft");
           try{
              connect("localhost", 1339);
           }catch(IOException e){
            e.printStackTrace();
           }
    }
    public ClientTool(int port){
           System.out.println("Client läuft");
           try{
              connect("localhost", port);
           }catch(IOException e){
            e.printStackTrace();
           }
    }
    public void connect(String ip, int port) throws IOException, UnknownHostException{
           sock = new Socket(ip, port);
           sock.setSoTimeout(10000);
           sock.setKeepAlive(true);
           thr = new Thread(this);
           thr.start();

    }
    public void run(){
           while(!thr.isInterrupted()){
           System.out.println("Client Thread läuft...");
                      try{
                      writer = new PrintWriter(sock.getOutputStream(),true);
                      reader = new BufferedReader(
                     new InputStreamReader(sock.getInputStream()));
                      writer.write("PING\r\n");
                      writer.flush();
                      System.out.println(reader.readLine());
                      try{
                          Thread.sleep(100);
                       }catch(InterruptedException e){

                          e.printStackTrace();
                      }
                      }
                      catch(IOException e){
                            e.printStackTrace();
                            thr.interrupt();
                      }


                      if(!sock.isConnected() || !sock.isBound()){
                      System.out.println("Server nicht verbunden");
                      thr.interrupt();

                      }
           }

    }

    public static void main(String[] args){
        new ClientTool(1339);
    }
}


Bin für jede Hilfe dankbar :)
 

flashfactor

Aktives Mitglied
Also ich auch ein einfaches Beispiel mit Server-Socket incl mehrer Clients.

Ich habe zwar ein anderes Problemn wie du aber dein Problem tritt bei mir nicht auf.

Zwar habe ich Clientseitig nur Telnet zum verbinden genutzt aber es hat alles funktioniert.

Nur den ServerThread kann ich aus den Main-Thread nicht beenden.

http://www.java-forum.org/de/viewtopic.php?t=6013

Da kannst dir den kompletten Server-Code anschauen.

Ich schau mir mal deinen Teil an.
 

flashfactor

Aktives Mitglied
brauchen tust du die threadgroup eigentlich nicht aber durch diese Threadgroup kannst alle ClientThreads z.B..: aufeinmal beenden.
und soweiter
du müsstest eigentlich den Clients garnicht abspeichern aber ch wollte es einmal so machen.
 

Dante

Bekanntes Mitglied
du erstellst hier in beiden while-schleifen die stream- und reader/writer-geschichten bei jedem durchgang neu, das ist unnötig. Vielleicht ist da der Hund schon begraben, da das Schliessen eines solchen zB. den Socket mit schliesst.

Ansonsten sehe ich auch grad wenig was falsch sein könnte.
 

flashfactor

Aktives Mitglied
Richtig das war ein Fehler.
Aber die Probleme die er beschrieben hat kamen durch das SetSoTimeout auf den ClientThread
Wenn man den weg lässt funktioniert es einwandfrei, und eigentlich braucht man ja kein Timeout auf einen ClientThread
 

meez

Top Contributor
flashfactor hat gesagt.:
Richtig das war ein Fehler.
Aber die Probleme die er beschrieben hat kamen durch das SetSoTimeout auf den ClientThread
Wenn man den weg lässt funktioniert es einwandfrei, und eigentlich braucht man ja kein Timeout auf einen ClientThread


300 ms ist wohl auch etwas kurz...;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Socket Java Chat - Verbindung zum Server fehlgeschlagen. Netzwerkprogrammierung 5
G Socket Socket verbindung für Chat System Netzwerkprogrammierung 3
K Chat: Verbindung kommt nicht zu stande Netzwerkprogrammierung 6
H Socket Chat entwickeln mit Java Server Client 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
D Chat Server/mehre Client Netzwerkprogrammierung 9
Androbin Socket Fehlerhafter Applet-Chat Netzwerkprogrammierung 12
C Microsoft Comic Chat Netzwerkprogrammierung 0
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
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
I Chat-Client empfängt nichts vom Server Netzwerkprogrammierung 3
A Socket UDP Chat Verbindungsproblem im WWW (Server sendet ins leere) Netzwerkprogrammierung 11
A Multi-User-Chat Netzwerkprogrammierung 2
M Socket Chat-Client-Problem Netzwerkprogrammierung 8
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
AMStyles Client Server basierter Chat Netzwerkprogrammierung 7
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
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
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
T Chat-Client Netzwerkprogrammierung 12
G Chat zwischen applets: möglich? Netzwerkprogrammierung 2
T Chat mit mehreren Clients Netzwerkprogrammierung 3
C Chat , Streamproblem, PumpingException, Danke Netzwerkprogrammierung 2
S RMI Chat Problem, Client bekannt machen 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
S JAV07P SGD client/server chat Netzwerkprogrammierung 4
C IRC CHAT auslesen -> Sockets/input und output Streams Netzwerkprogrammierung 9
S Einfacher Multiuser chat in java Netzwerkprogrammierung 18
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
D Verbindung zu Geräten mit gleicher IP aber in unterschiedlichen VLans aufbauen Netzwerkprogrammierung 2
M Socket Socket lehnt Verbindung ab Netzwerkprogrammierung 3
IAmFloppy Socket Nachstellen der Verbindung Netzwerkprogrammierung 6
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
M Socket peer to peer Verbindung zwischen Java und Matlab Netzwerkprogrammierung 0
S Bluetooth Verbindung zwischen Android app und Raspberry Pi 3 Netzwerkprogrammierung 1
S Peer2Peer Verbindung trotz NAT Netzwerkprogrammierung 2
T VPN-Verbindung über Java Netzwerkprogrammierung 4
Aruetiise Socket Verbindung Überprüfen Netzwerkprogrammierung 18
F Socket Verbindung mit Verschlüsselung und Authentifierzung Netzwerkprogrammierung 1
F Probleme mit Connection Reset bei Telnet Verbindung Netzwerkprogrammierung 1
U Client Soap Verbindung wieder schließen Netzwerkprogrammierung 0
M Verbindung zwischen zwei Pc in dem Selben Netzwerk Netzwerkprogrammierung 8
P Socket Socket-Verbindung Input sehr langsam Netzwerkprogrammierung 1
S FTP Verbindung zu einem BS2000 Großrechner mit Commons Net Netzwerkprogrammierung 0

Ähnliche Java Themen

Neue Themen


Oben