Socket Programmierung

Status
Nicht offen für weitere Antworten.

blue_devil86

Mitglied
Hallo meine Götter,

ich mache gerade einen Socket. Geht alles gut soweit ich mach in der Klasse Server:
Code:
while(true) {
socketc = this.serversocket.accept();
Thread thread = new Thread(new ClientHaendler(socketc));
thread.start();
}

so also ich starte pro Client ein neues Thread.

Jetzt das Problem:

Es funktioniert zwar jedoch bekommt der Client der eine Nachricht sendet auch diese zurück wie es sein soll aber die anderen verbunden nicht.

ich wollte eine Membervariable machen
ArrayList clientausgabestroem;

PrintWriter writer = new PrintWriter(socketc.getOutputStream) //socketc kommt aus der Klasse Server
und es dann so machen das clientausgabestroem.add(writer); ist.

und die Nachrichten so verteilen:

Iterator iterator = clientausgabestroem.iterator();
while(ist.hasNext()){
try{
PrintWriter writer = (PrintWriter) it.next();
writer.println(nachricht); //nachricht ist das was zu senden ist vom Typ string
writer.flush();
} catch....
}

Ich glaube es liegt einfach nur an clientausgabestroem das die nicht in Server gespeichert werden und jeden Thread nimmt sich im augenblick des verteilens das neue array clientausgabestroem.

Ich hoffe mir kann bei diesen Problem jemand helfen.
Schon mal danke im voraus
 

FelixR

Mitglied
Hi

ein sehr komplexes Problem, was ich so nicht beantworten kann, da ich auch zum Teil gar nicht verstehe wo genau das Problem liegt. Entweder du stellst mal den gesamten Code oder ein Klassendiagramm zur verfügung, damit man sioch mal ein genaueres Bild machen kann wie du den Ablauf geplant hast.
Ansonsten einfach den Debugmodus benutzen und schritt für schritt durchlaufen lassen. Wenn du verstehst (wovon ich mal ausgehe) was alles im einzelnen geschieht, sollte es auch nicht schwer sein die Logic zu erkennen wartum nicht alle eine Nachricht bekommen.

gruß Felix
 
G

Guest

Gast
ChatServer
Code:
import java.net.*;
import java.io.*;
import java.util.*;

public class ChatServer {

    //Memvervariablen
    ServerSocket serversocket;
    Socket socketc  = null;
    final ArrayList userarray = new ArrayList();
    
    /**
     * Konstruktor
     */
    public ChatServer() {
        System.out.println("ChatServer wird gestartet!");
        
        try {
            System.out.println("Server Socket wird angelegt!");
            this.serversocket = new ServerSocket(2004);
            System.out.println("Serversocket: "+serversocket);
        } catch(IOException e) {
            System.out.println("Fehler beim Socket erstellen!");
        }
        
        while(true) {
            try {                             
                socketc = this.serversocket.accept();
                System.out.println("Client Socket: "+socketc);
                Thread thread = new Thread(new ClientHaendler(socketc));
                thread.start();
            } catch (Exception e) {
                System.out.println("Fehler beim ChatServer starten!");
            }           
        }
    }  
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        System.out.println("rennt glei loss..");
        ChatServer chatserver = new ChatServer();
    }
}

ClientHaendler
Code:
import java.net.*;
import java.io.*;
import java.util.*;

public class ClientHaendler implements Runnable{
    
    //Membervariablen
    Socket socketc ;
    
    

    public ClientHaendler(Socket socketc) {
        this.socketc = socketc;
    }
    
    public void run() {
        String nachricht;
        try {
            PrintWriter printwriter = new PrintWriter(socketc.getOutputStream());
            BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(socketc.getInputStream()));
            
            printwriter.println("Hallo\n");
            printwriter.flush();
            while((nachricht = bufferedreader.readLine()) != null) {
                System.out.println(nachricht);
                printwriter.println(nachricht);
                printwriter.flush();
                nachrichtverteilen(nachricht);
            }            
        } catch (Exception ex) {
            System.out.println("Fehler in run()");
        }
    }
    public void nachrichtverteilen(String nachricht) {
 	Iterator it = clientAusgabeStroeme.iterator();
        while(it.hasNext()) {
            try {
                PrintWriter writer = (PrintWriter) it.next();
                writer.println(nachricht);
                writer.flush();
            } catch (Exception ex) { ex.printStackTrace(); }
        }

    
    }
}

so ich hab mal den ganzen Code gepostet.

Man sieht mein Problem das die clientAusgabeStroeme nur pro ein Client gilt.
Es sollten aber alle verbunden Clients darin gespeichert sein.

Ich denk mal ich muss die clientAusgabeStroeme in ChatServer speichern und dann beim verteilen immer wieder von da hollen. Ich hoffe ihr versteht das Problem jetzt besser.
 
G

Guest

Gast
Code:
public class ChatServer{
    
    ArrayList clientAusgabeStroeme;
    
    public class ClientHandler implements Runnable {
    ...
    }
}

wenn ich den Code so aufbauen wirde müste es gehen aber ich will die Klassen nicht so verbasteln.
Es muss doch einen anderen Weg geben clientAusgabeStroeme überall zur verfügung zu haben.
 
G

Guest

Gast
Lösung: Schnittstelle lol ganz vergessen das es ja noch sowas gibt
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Java socket Programmierung Filme verschicken Netzwerkprogrammierung 20
J Socket Socket Programmierung. Wie anfangen? Netzwerkprogrammierung 4
G Socket Programmierung - Max. Threads Netzwerkprogrammierung 5
W Socket Server -> lesen von / schreiben zu php-script Netzwerkprogrammierung 6
B Versuch mit Socket etwas zu lesen und zu schreiben Netzwerkprogrammierung 15
G Socket Socket Kommunikation Netzwerkprogrammierung 1
L Server-Socket liest Input-Stream nicht Netzwerkprogrammierung 5
H Socket Kann ein Socket server 2 dimensionale Arrays empfangen und versenden? Netzwerkprogrammierung 3
D Socket-Verbindungen übers Internet Netzwerkprogrammierung 4
Z Kann nicht Daten vom Server lesen Socket Netzwerkprogrammierung 10
A TCP multiClientServer mit socket mittels ObjectOutputStream Netzwerkprogrammierung 12
A Socket-Anwendung (BufferedWriter/Reader liest nicht aktuellen Wert) Netzwerkprogrammierung 6
platofan23 Socket Java Socket mit DynDns nicht erreichbar Netzwerkprogrammierung 6
S Socket Bilder über Socket Senden Netzwerkprogrammierung 0
M Socket Socket lehnt Verbindung ab Netzwerkprogrammierung 3
x46 Connection reset by peer: socket write error Netzwerkprogrammierung 6
x46 Socket Files per Socket verschicken Netzwerkprogrammierung 1
platofan23 Probleme mit Socket bei Android Studio? Netzwerkprogrammierung 22
platofan23 Socket Hilfe mit Socket Thread und ArrayList Netzwerkprogrammierung 6
R Socket FATAL EXCEPTION MAIN bei Socket based client/server app Netzwerkprogrammierung 2
D new ObjectInputStream(socket.getInputStream()); Netzwerkprogrammierung 15
E Socket Frage Netzwerkprogrammierung 6
D ServerSocket - Socket Verbindungsart Netzwerkprogrammierung 3
T Frage bzgl. Socket-API Netzwerkprogrammierung 1
F TCP Socket auf Verbindungsabbruch prüfen Netzwerkprogrammierung 15
F Socket Verbindung mit Verschlüsselung und Authentifierzung Netzwerkprogrammierung 1
I Socket ObjectOutputStream-Socket: Objekt wird falsch übertragen Netzwerkprogrammierung 2
T Socket Socket connections schließen? Netzwerkprogrammierung 2
D Socket Socket OutputStream leeren? Netzwerkprogrammierung 3
T Socket Java Programm hängt sich auf bei dem versuch von einem Socket scanner Daten zu erhalten. Netzwerkprogrammierung 1
F Socket Socket in anderen Methoden Netzwerkprogrammierung 1
D Socket Run Args Client/Server Socket Netzwerkprogrammierung 1
M Problem bei Socket (MultiplayerSpiel) Netzwerkprogrammierung 4
I Socket Netzwerkprogrammierung 1
F Wiederverbinden nach socket Abbruch Netzwerkprogrammierung 1
J 1 Socket - 2 Serversocket Netzwerkprogrammierung 4
T Socket sendet erst nach socket.close() Netzwerkprogrammierung 2
F Socket Verbindungsaufbau abbrechen Netzwerkprogrammierung 3
P Socket Socket-Verbindung Input sehr langsam Netzwerkprogrammierung 1
I Socket Kommunikation C / Java Netzwerkprogrammierung 2
Joew0815 socket event handler Netzwerkprogrammierung 2
F Einfache Socket Verbindung Netzwerkprogrammierung 2
A Socket Socket Receive-/SendBuffersize Netzwerkprogrammierung 0
D Socket server auf Smartphone Netzwerkprogrammierung 9
H Socket Client/Server Socket Programmieren Netzwerkprogrammierung 1
A Socket Socket Server netcat Netzwerkprogrammierung 1
Shams Anfängerfrage zu Server-Socket-Kommunikation Netzwerkprogrammierung 2
M Socket String Arrays über Socket an Server schicken Netzwerkprogrammierung 2
D Socket Error: java.lang.NullPointerException Netzwerkprogrammierung 1
D TCP Socket funktioniert nicht richtig Netzwerkprogrammierung 3
X Problem mit vielen Bytes über Socket Netzwerkprogrammierung 23
B SSL Socket Netzwerkprogrammierung 2
A Socket Socket-Problem - Object wird nicht übertragen Netzwerkprogrammierung 3
M Client sendet nur, wenn das Socket geschlossen wird Netzwerkprogrammierung 53
R Dauerhaft offene Socket-Verbindung? Netzwerkprogrammierung 3
S Socket (client) verbindet nicht Netzwerkprogrammierung 6
G Socket Socket verbindung für Chat System Netzwerkprogrammierung 3
P Warum kann ich kein Socket aufbauen? Netzwerkprogrammierung 12
S Socket SSL Socket und Sun/Oracle Java Netzwerkprogrammierung 5
S Socket Socket Verbindung wiederherstellen Netzwerkprogrammierung 16
precoc Server Socket Start / Stop Netzwerkprogrammierung 5
N SOCKET mehrere Requests, keep Alive serverspezifisch? Netzwerkprogrammierung 3
S ImageIcon über Socket schicken (Serialisierung) Netzwerkprogrammierung 6
C Socket Systemsperren mit Socket Netzwerkprogrammierung 4
H Socket Objekte über Socket? Allgemeine Verständnisprobleme in Sachen Socket Netzwerkprogrammierung 3
D Socket Multithread-Socket | Kurz vor dem Ziel Netzwerkprogrammierung 7
C Datei über Socket schreiben und Ereignis lesen Netzwerkprogrammierung 9
D Socket Dynamische Socket-Thread Erzeugung Netzwerkprogrammierung 2
D Socket Socket absichtlich so schließen, dass Gegenseite java.net.SocketException: Connection reset wirft Netzwerkprogrammierung 4
J Socket Dateien über Socket auf Server speichern Netzwerkprogrammierung 3
S Socket-Frage zu einem LAN-Spiel. Netzwerkprogrammierung 3
A UDP verlorene Pakete/ socket.receive zu langsam Netzwerkprogrammierung 27
CookieSoft Socket Packet per Socket Netzwerkprogrammierung 8
CookieSoft Fehler bei Socket Netzwerkprogrammierung 4
D Socket Datei nur stückweise über Socket verschicken Netzwerkprogrammierung 6
T Per Socket auf POP3 zugreifen? Netzwerkprogrammierung 7
G Bild über Socket schicken - Client/Server Netzwerkprogrammierung 10
Z Socket Socket-Thread falsch? Netzwerkprogrammierung 5
Helgon Socket Socket IP Frage + Tutorial/Bücher Netzwerkprogrammierung 5
S Socket Verschiedene Exceptions beim Übertragen von Bildern über Socket Netzwerkprogrammierung 20
T Socket String zu Socket Netzwerkprogrammierung 26
M Datenübertragung per Socket nur alle 200ms Netzwerkprogrammierung 4
C Socket Socket: Connection timed out Netzwerkprogrammierung 3
T Socket blockierter Socket Netzwerkprogrammierung 4
C Socket Probleme beim Lesen und Schreiben aus/in einen Socket Netzwerkprogrammierung 2
T Alternative Socket mit Verbindungsabbruch Erkennung Netzwerkprogrammierung 2
M Socket, Ende Dateitransfer Netzwerkprogrammierung 4
X Über eine Socket-Verbindung Arrays übergeben Netzwerkprogrammierung 5
D RMI oder Socket Netzwerkprogrammierung 4
H Socket Socket listening Netzwerkprogrammierung 11
D Client Socket mit Eventlistener? Netzwerkprogrammierung 5
P Socket Verbindung über das Internet Netzwerkprogrammierung 2
A Socket Netzwerkprogrammierung 18
N Socket geht auf Windows, aber auf Mac nicht ? Netzwerkprogrammierung 3
ruffio1978 Telnet über ein socket ansprechen Netzwerkprogrammierung 8
G Exception: Connection reset by peer: socket write error Netzwerkprogrammierung 2
M SSl Socket Server und openssl key Netzwerkprogrammierung 3
DEvent Keine IOException beim schreiben Socket Netzwerkprogrammierung 3
A Socket Server: Message an verschiedene Clients senden Netzwerkprogrammierung 4
F Socket Verbindungen über mehrere Server Netzwerkprogrammierung 4

Ähnliche Java Themen


Oben