Hilfe bei multiplen Clients

Status
Nicht offen für weitere Antworten.

Hutmacher

Bekanntes Mitglied
Ich schreibe gerade an einem Programm, mit dessen Hilfe ich Dateien von einem PC an einen anderen PC übermitteln kann.

Hierzu habe ich als aller erstes einen Server. Wenn dieser eine Verbindung zu einem Client aufbaut, hält er ihn erst mal so lange, bis ich dem Server gesagt habe, welche Datei er senden soll.
Java:
...
public Server()
{
    while ( true )
    {
        Socket client = accept(); //Beschafft den Client
        
        //Warten, bis ein Befehl gegeben wurde
        while ( nochKeinBefehlGegeben )
        {
            Thread.sleep(1);
        }
           
        //Dem Client die Datei uebermitteln (per PrintWriter)
        ...
    }
}
Jetzt hat der Client die Datei und schreibt sie auf den Desktop. Thema beendet.

Nun möchte ich es aber so einrichten, dass der User aus einer Liste von verbundenen Clients auswählen kann, wem er die Datei sendet.
Es ergibt sich also ein Problem: Wenn der eine Client noch gehalten wird, kann der andere nicht connecten.
Außerdem, wie soll ich dem Server sagen, dass er die Datei an einen bestimmten Socket weiterleiten soll?

Ich habe überlegt, dass ich es mit dem Senden vielleicht so machen kann:
Ich überprüfe, ob er aktuelle Socket dieselbe IP-Adresse wie der ausgewählte User hat; hat er sie, wird die Datei versandt, checkt er die anderen durch.
Irgendwie aber kommt mir diese Lösung auch nicht optimal vor, zumal ich dabei immer wieder connectete Sockets verliere.

Habt ihr einen besseren Vorschlag und könnt mir sagen, wie ich das multithreaden kann?

Anhang:
Darüber hinaus habe ich mit mal mit DCC (Direct Client-to-Client) beschäftigt, aber dafür gibt es leider keine Java-APIs.
 

Paddelpirat

Bekanntes Mitglied
Du solltest dich mal über "multithreaded (Java-) Server" informieren (google, bing, etc helfen weiter). Du musst jede Socket-Verbindung, die du in deinem Server akzeptierst in einem eigenen Thread laufen lassen, bis sie halt beendet wird.

Eine Client - Client Verbindung ist eigentlich wieder eine normale Client-Server Verbindung, nur dass dein Client gleichzeitig als Server fungiert.
 

Hutmacher

Bekanntes Mitglied
Ich sag es mal so: bitte spezifizieren Sie ihr Problem ;)

Steht doch im ersten Post ^^
Dass ich aus ein er Liste auswaehle, wem ich die Datei sende.
Habe mir jetzt Folgendes ueberlegt:
Wenn der Client connectet, wird sein Socket mit dem Username (outputstream!) in einer HashMap gespeichert. Will man etwas senden, so wird ein Thread gestartet, der die Daten in den jeweiligen Stream schreibt.

Geht das denn, 20 Sockets offen zu haben?
Bessere Loesungsmoeglichkeiten?
 

sparrow

Top Contributor
Ne, passt!

Clients in eine Liste und den entsprechenden raussuchen, senden, gut ist.

20 offene Sockets sind kein Problem.
 

sparrow

Top Contributor
Top :)
Habe nämlich (weil bei den Bsp-Servern immer nur einer da sein kann und der dann auch wieder geschlossen wird) gedacht, dass das nicht ginge.

Danke ;D

Einfach den Socket der von ServerSocket.accept() zurück kommt in einen neuen Thread überführen.
Hier gibt es einen Beispielcode für einen Webserver: Handbuch der Java-Programmierung - Google Bücher
Ansosnsten gbt es das Buch (aus dem Link) "Handbuch der Java Programmierung" unter www.javabuch.de - Das Handbuch der Java-Programmierung kostenlos als HTML-Version als Download.
Du musst dann quasi die Threads in einer Liste führe.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Objekt mit RSA und AES verschlüsseln und entschlüsseln HILFE Netzwerkprogrammierung 4
T Brauche Hilfe beim GET-String für HttpURLConnection Netzwerkprogrammierung 4
platofan23 Socket Hilfe mit Socket Thread und ArrayList Netzwerkprogrammierung 6
V Kann man mit Hilfe eines Java-Programms den Zugriff auf bestimmte Internetseiten verhinden? Netzwerkprogrammierung 3
C JSON, API ... Anfänger braucht eure Hilfe Netzwerkprogrammierung 10
KingSquizzi3 Website parsen mit Hilfe von jsoup funktioniert nicht Netzwerkprogrammierung 3
J Hilfe beim programmiern einer App zur Anmeldung im Wlan-Netzwerk Netzwerkprogrammierung 0
B JKS erstellen bitte um hilfe Netzwerkprogrammierung 1
R Hilfe bei FTP Netzwerkprogrammierung 7
D HTTP Bräuchte hilfe mit Http Requests Netzwerkprogrammierung 6
R Benötige Hilfe bei Routereinstellungen Netzwerkprogrammierung 7
E RMI RMI - Brauche Hilfe? Netzwerkprogrammierung 7
xDarkSunx Hilfe Chat Login Netzwerkprogrammierung 7
K Datenübertragung UDP Hilfe ????? Netzwerkprogrammierung 5
N Client - Server kurze Hilfe bitte Netzwerkprogrammierung 2
T IP Adresse mit Hilfe der MAC Adresse ermitteln Netzwerkprogrammierung 3
D Hilfe ich komme bei meinem UDP chat Server nicht mehr weiter Netzwerkprogrammierung 9
D Hilfe, meine HttpURLConnection hängt manchmal. Netzwerkprogrammierung 9
eQui Hilfe bei Chatprogramm Netzwerkprogrammierung 3
J Brauche hilfe bei Projekt: Netzwerk Chatprogramm Netzwerkprogrammierung 12
TRunKX Hilfe beim senden und empfangen Netzwerkprogrammierung 2
André B. Brauche Hilfe bei Chat Netzwerkprogrammierung 6
D Netzwerk Game, bitte hilfe. Netzwerkprogrammierung 2
N JMS Newbie braucht hilfe Netzwerkprogrammierung 6
S Noob braucht dringend hilfe bei ftp-client Netzwerkprogrammierung 2
M Socket Senden an alle verbundenen Clients Netzwerkprogrammierung 3
M Socket Netzwerk Übertragung zwischen 4 Clients Netzwerkprogrammierung 2
G Gui von 2 Clients Synchronisieren Netzwerkprogrammierung 2
F Schulprojekt erweitern - Online Quiz mit mehreren Clients - Was benötige ich ? Netzwerkprogrammierung 0
P Socket Viele Clients bedienen mit Vert.x Netzwerkprogrammierung 9
Aruetiise Socket Mehrere Clients Netzwerkprogrammierung 4
J Framework mehrere Clients/ Server-Broadcast/oracle XE/ XML Netzwerkprogrammierung 1
V Server / mehrere Clients / MySQL / Konzept Netzwerkprogrammierung 2
M MultiClient Server - Senden an alle Clients Netzwerkprogrammierung 8
G Multiple Clients and one Server --> java.lang.NullPointerException Netzwerkprogrammierung 1
M Teilnehmerliste vom Server auch an alle Clients senden Netzwerkprogrammierung 0
Luk10 Server / Client: Clients speichern! Netzwerkprogrammierung 6
Z Socket [Chatprogramm] Mehrere Clients an einen Server Netzwerkprogrammierung 10
C Socket Identifikation des clients nach der accept() Methode Netzwerkprogrammierung 2
D Mehrere Clients über Java-Sockets Netzwerkprogrammierung 13
cedi Socket Mehrere Clients an einem Server Netzwerkprogrammierung 4
A Socket Server: Message an verschiedene Clients senden Netzwerkprogrammierung 4
B Socket Liste von clients - multicast Netzwerkprogrammierung 4
M Anzahl Clients aus Start- und Endadr. berechnen Netzwerkprogrammierung 54
R Viele Clients ein Server Netzwerkprogrammierung 8
borobudur Synchronisation von Clients Netzwerkprogrammierung 10
S Socket nach anderen clients im netzwerk suchen Netzwerkprogrammierung 3
L Socket Chat Server für mehrere Clients Netzwerkprogrammierung 7
L RMI Informationen über die Clients herausfinden Netzwerkprogrammierung 5
H Neues NIO problem nachricht an alle clients Netzwerkprogrammierung 3
D Probleme bei mehreren Clients uns Senden von Messages Netzwerkprogrammierung 16
P Socket Datei von Client zum Server übertragen --> Weiterleitung an Clients Netzwerkprogrammierung 16
F Erhalten und Senden von Nachrichten anhand des Indexes des Clients Netzwerkprogrammierung 19
cowabunga1984 Transferierte Datenmenge eines SOAP Clients (JAX-WS) anzeigen Netzwerkprogrammierung 2
T Administration von Software auf Clients im Netzwerk Netzwerkprogrammierung 6
D Netzwerkprobleme bei mehreren Clients Netzwerkprogrammierung 4
F Peer to Peer Verbindung zwischen mehreren Clients? Netzwerkprogrammierung 8
D Clients sollen mehrere Sessions starten Netzwerkprogrammierung 11
A Server mit mehreren Clients Netzwerkprogrammierung 2
G Nachricht an mehrere Clients schicken Netzwerkprogrammierung 10
5 Webservice max. mit 5 Clients möglich Netzwerkprogrammierung 10
M clients untereinander kommunizieren Netzwerkprogrammierung 2
A RMI: Wieviele Clients können sich gleichzeitig anmelden? Netzwerkprogrammierung 34
B Rmi Kommunikation Server zu mehreren Clients? Netzwerkprogrammierung 3
T Am RMI-Server: IP des Clients ermitteln? Netzwerkprogrammierung 2
J SecurityManager - Server-Zugriff nur von bestimmten Clients? Netzwerkprogrammierung 2
T RMI - Probleme beim Starten des Clients Netzwerkprogrammierung 4
T Chat mit mehreren Clients Netzwerkprogrammierung 3
G Anzahl verbundener Clients zu einem FTP-Server ermitteln? Netzwerkprogrammierung 4
G Server an mehrere Clients Netzwerkprogrammierung 15
D Netzwerk Betrachtung mit vielen Clients Netzwerkprogrammierung 2
G Nachricht von server an alle clients senden Netzwerkprogrammierung 6
I IP Adresse des Clients einer Socket Verbindung Netzwerkprogrammierung 2
S Server mit mehreren Clients Nachrichten austauschen Netzwerkprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben