Multiclient Chat

Status
Nicht offen für weitere Antworten.
F

fluxy

Gast
Hallo ich habe mir vorgenommen, einen multiclient Chat zu programmieren. Allerdings klappt das nicht so ganz. Es werden zwar meine Clienten abgenommen und über den Telnet kommt auch eine Willkommensnachricht an, allerdings funktioniert weder das senden noch das Empfangen.


Vom Prinzip her mache ich folgendes:


In meiner Serverklasse richte ich die Sockets ein:

Code:
    //Server.java
    
    // hier eben die Membervariablen der Serverklasse
    private ServerSocket mainSocket;
    private Socket waitSocket;
    private final int PORT = 12344;
    private final String IP = "127.0.0.1";
    private final int nPosClients = 10000;
    private User userPool[];
    private int nClients;

    public Server() throws IOException
    {

        nClients = 0;
        userPool = new User[nPosClients];
        mainSocket = new ServerSocket(PORT);
        waitForClients(waitSocket, "Willkommen.");
    }


und starte dann einen neuen Thread, und zwar für jeden User:

Code:
    //Server.java

    private void waitForClients(Socket waitSocket, String welcomeMessage) 
    throws IOException
    {

        while (true)
        {

            waitSocket = mainSocket.accept();
            System.out.println("New Client connected");

            // Starte neuen Userthread
            // =========================
            userPool[nClients] = new User(waitSocket);
            userPool[nClients].statup("Willkommen");
            userPool[nClients].start();
            nClients++;

        }


hiermit soll für jeden Client ein neuer Thread erzeugt werden. Die startup methode erzeugt dann die Streams und gibt eine Willkommensnachricht an den Clienten zurück (über das Socket)

Code:
    //Users.java

    public void statup(String welcomeMessage) throws IOException
    {

        m_outputStream = new BufferedOutputStream(m_userSocket.getOutputStream());
        m_inputStream = new BufferedInputStream(m_userSocket.getInputStream());

        m_outputStream.write(welcomeMessage.getBytes());
        m_outputStream.flush();  

    }



Jetzt habe ich mir gedacht kann ich in meinem Thread (Die Userklasse ist von Thread abgeleitet deshalb auch die start-methode) in einer Endlosschleife immer wieder den selben String an den Client senden (aber es kommt hier nix an:

Code:
    //User.java

    public void run()
    {

        StringBuffer tmp = new StringBuffer(64);
        StringBuffer msg = new StringBuffer(64);
        tmp.append("Neuer User connected:  ");
        tmp.append("TESTUSER");
        System.out.println(tmp);

        while (true)
        {

            try
            {
                StringBuffer test = new StringBuffer (64);
                msg.append("test");
                m_outputStream.write(test.toString().getBytes());
                m_outputStream.flush();  
                //sleep(1000);

            }
           
            catch (IOException e)
            {
            }

        }

    }



Information: Im Client starte ich analog dazu einen Thread, der für das Empfangen zuständig ist. Mache ich konzeptionell irgendwas falsch oder ist im Code ein Fehler? Ich bin mir noch nicht ganz sicher, wie ich das realisieren sollte, vielleicht kann sich das ja mal jemand anschauen.


Gruß
 

Dante

Bekanntes Mitglied
Kann es sein, das du auf Client-Seite eine ganze Zeile lesen willst (readLine())? Du sendest nämlich keinen Zeilenumbruch...
 
G

Guest

Gast
Nein ich konnte beim Clienten irgendwie keinen BufferedInput(Output)Stream erzeugen, darum habe ich es noch ungebuffered. Hier die Run-Methode des Client-Threads:


Code:
public void run ()
	{
	    while (true)
	    {
	        StringBuffer revMessage = new StringBuffer (64);
	        int nrev = 0; 
	        while (nrev != -1)
	        {
	            try
                {
                    nrev = inputData.read();
                    revMessage.append(nrev);
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
	        }
	        
	        
	        //String ausgeben
	        String msg = revMessage.toString();
	        System.out.println("Neuer String empfangen: " + msg);
	        display.add(msg);
	        
	    }
	}
 
G

Guest

Gast
hmmm laso direkt mal eine Frage:



Du machst deine Streamobjekte so:


BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));




ich habe jetzt:


Code:
m_outputStream = new BufferedOutputStream(m_userSocket.getOutputStream()); 
        m_inputStream = new BufferedInputStream(m_userSocket.getInputStream()); 
/code]


gemacht. Macht das einen Unterschied? Ich meine es sind ja beides BufferedStreams, obwohl du nen Expliziten Writer hast.
 

Dante

Bekanntes Mitglied
API lesen.

Versuche mal mit deiner Variante eine ganze Zeile zu lesen, einen String zu schreiben, oder überhaupt nen Char.
 
G

Guest

Gast
hmmm also ich habe jetzt mal deine genommen und bei mir klappt jetzt überhaupt nix mehr
 
G

Guest

Gast
Hallo,


ich habe es jetzt wieder hinbekommen das das senden wieder klappt. Allerdings klappt der Client noch nicht so ganz. Muss ich eigendlich kein bind () und accept () machen?! bei dir im tut steht davon nix....
 

KSG9|sebastian

Top Contributor
server:

Code:
ServerSocket ss = new ServerSocket(1234);
Socket s;

s = ss.accept();

Client:

Code:
Socket s = new Socket("ip vom server", 1234);
 
G

Guest

Gast
hmm ich habe es es war ein anderes problem danke für eure hilfe!!!
 
G

Guest

Gast
Und wo lag das Problem nun???
Bin momentan selbst auch an sowas ähnlichem Beschäftigt und würde das gerne wissen damit mir das im laufe der entwicklung nicht auch passiert!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M MultiClient Server - Senden an alle Clients Netzwerkprogrammierung 8
M Multiclient-Server-Communication Netzwerkprogrammierung 5
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
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
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
K Chat: Nur 1 Verbindung zum Server möglich :( Netzwerkprogrammierung 6
K Chat: Verbindung kommt nicht zu stande Netzwerkprogrammierung 6
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

Ähnliche Java Themen

Neue Themen


Oben