eine klasse mit server & client

N

nachtgrabb

Gast
hallo ihr lieben,

ich bräuchte mal eure hilfe!
ich habe 3 klassen - alice, bob und cathy.
alice muss bob eine nachricht schicken können, auf die er antwortet. bis hierher habe ich es so gelöst, dass bob einen server hat, alice besitzt einen client (aus den schönen java.io-klassen).
jetzt sollen die beiden nicht mehr direkt reden laufen, sondern über cathy moderiert die diskussion.
aber ich weiß nicht so genau, wie ich das anstellen soll..!
ich dachte mir das so, dass cathy sowohl einen server, als auch einen client besitzt.
nur wie?

so ein server muss ja vor dem client gestartet werden.
nur muss mein server ja ab dem moment des startens die ganze zeit seinen client-socket-inputStream überwachen. die methode, die das tut, kommt erst zu ihrem return statement, wenn ein client "bye" schreibt..
deswegen kann ich schlecht irgendwie in cathys constructor schreiben
server = new Server();
client = new Client();
weil ich ja bei dem client nie ankomme...
als nur bob und alice da waren, habe ich das einfach so gelöst, dass ich die beiden nicht in der gleichen instanz meines programms gestartet habe, sonder in zwei separaten - so als säßen bob und alice jeder an ihrem eigenen pc.
aber für cathy funktioniert das so ja nicht.. *kopfkratz

ein bisschen habe ich mit Threads rumprobiert, weil ich dachte, dass die beiden sachen dann gleichzeitig laufen könnten, aber das wollte nicht tun :-/


hat jemand den roman zu ende gelesen und kann mir einen rat geben?
ist der Thread-ansatz richtig?
großes danke im vorraus und schöne weihnachten euch allen! :)

liebe grüße,
die euli

p.s: ich hoffe, ich hab' die richtige rubirk für das thema ausgesucht..
 
I

irgendjemand

Gast
Thread-Ansatz : aber definitiv richtig und auch nötig ...

aber den rest verstehe ich nicht ?

wenn cathy ein "moderator" sein soll ... warum sollte cathy dann eine client-komponente haben ?
hier hast du scheinbar ein bisschen was falsch verstanden ...

cathy dient als moderator ... muss also in dem fall "ganz oben" stehen ...
alice und bob sind dann cathy untergeordnet ... brauchen also beide jeweils nur einen client-part ...

das ganze nennt sich dann broadcast-communication ...

ziel und sinn ist es das sich mehrere clients unabhängig von ein ander bei einem server melden ...
also in deinem fall alice und bob bei cathy ...

wie du dann daten von einem client zu einem anderen weiterreichst kommt auf die umgebung an die du aufbauen willst ...

als wo sehr einfaches beispiel *chat* : Kaffee & Kuchen - Datenbank-Anbindung mit JDBC

dort ist "cathy" der "server" der alle verbindungen entgegen nimmt ...
"alice" und "bob" haben jeweils eine instanz des "client" laufen *hier kannst du für alle clienten den selben code nehmen ... musst also nicht dinge wie : ClientAlice und ClientBob schreiben ... sondern nur Client ... den alice und bob unabhängig von ein ander instanzieren* ...

zieh dir den code mal rein und google mal nach tutorials in die richtung "java server client" oder "java chat" und sowas ... da solltest du alles finden was du brauchst ...

bei fragen natürlich immer her damit =D
 
N

nachtgrabb

Gast
hallo irgendjemand! :)

vielen dank für deine ausführliche antwort! :)
der link war hilfreich! alice und bob sind jetzt erstmal threads..
wie cool! *freu,freu

die sache ist jetzt nur die, dass es durch die aufgabenstellung vorgegeben ist, dass sich durch das erscheinen von cathy für alice und bob nichts ändert. die quatschen sozusagen einfach weiter miteinander, nur über einen zwischenschritt cathy, von dem sie aber möglichst nichts mitbekommen.
alice hat weiter einen client, bob einen server.
nur soll alice jetzt nicht direkt an bob schreiben, sondern an cathy, die das, nach sorfgältiger prüfung des inhalts oder so, an bob weiterreicht. cathy bekommt dann bobs antwort, checkt die und hält sie alice hin.

nur, da geht's los mit kompliziert^^
alice, bob und cathy haben eine gemeinsame superklasse. letztere extended jetzt erstmal Thread (damit sie in der gleichen main-methode laufen können und ich nicht in 2 verschiedenen eclipse-workspaces rumwursteln muss^^)
der server extended die Observable-klasse aus java.io, bob implementiert das Observer-interface (damit bob informiert wird, wenn eine nachricht von alice eintrudelt und darauf reagieren kann).

but what to do with poor cathy?
sie will ja auch von ihrem server informiert werden, wenn der post bekommt und dann mit dem client antworten, deswegen wäre es ja schön, wenn der server weiterhin observable wäre... allerdings darf er ja nicht gleichzeitig ein Thread sein *haare rauf


ich bin... verwirrt^^
 
I

irgendjemand

Gast
da ich deine aufgabenstellung ja nun leider nicht kenne *wäre vielleicht sinnvoll diese mal zu posten* würde ich jetzt auf "proxy" tippen ...

was mir auch nicht ersichtlich wird : alle drei klassen werden von der selben main gestartet ?

! HALT !

du hast den link nicht ganz verstanden ...
eine solche umgebung löst man grundsätzlich dadurch das man wirklich für alle parteien eine eigene VM-instanz laufen hat ...

persönlich : ich bin nicht gerade begeistert von anfänger zu hören das diese IDEs nutzen ... kamen schon oft fragen wie man so manche grundlagen ohne IDE löst ... no further comment

in dem fall hab ich wohl etwas an deiner aufagbe vorbei geredet ...

wenn sich für alice und bob nichts ändern soll ... dann baust du alice und bob erstmal wieder so um wie sie waren BEVOR cathy ins spiel kam ...

DANN baust du cathy ...
hier braucht cathy dann natürlich einen server teil und einen client teil ...

schlussendlich baust du den client *wenn ich richtig gelesen habe alice ?* so um das sich dieser teil anstatt zum eigentlichen server zu cathy verbindet ...

damit das geht muss cathy natürlich dauerhaft eine server-instanz laufen haben ...

so bald nun also eine verbindung bei cathy eingeht baut diese von sich selbst mit hilfe des client-teils die verbindung zum eigentlichen server *bob* auf und verknüpft beide seiten mit ein ander *natürlich kann hier gefiltert werden* ...

start-reihenfolge wäre dann also

server bob
proxy cathy
client alice

hilft dir das vielleicht jetzt so weiter oder habe ich das problem immer noch nicht ganz erfasst ?
 
N

nachtgrabb

Gast
[..] so bald nun also eine verbindung bei cathy eingeht baut diese von sich selbst mit hilfe des client-teils die verbindung zum eigentlichen server *bob* auf und verknüpft beide seiten mit ein ander [..]


danke! ;)
das war's, worauf ich nicht gekommen bin^^
jetzt läuft's :)

danke, dass du mir geholfen hast! :)
jetzt freue ich mich eine runde, dass ich morgen nicht programmierend unterm tannenbaum sitzen muss! *gg

schöne weihnachten dir!!

:)


p.s:
dass das mit den threads da keine wirklich schöne simulation von 3 programmteilen, die eig auf unterschiedlichen rechnern laufen, ist, ist mir schon klar - nur ist es so schön praktisch und ich hab mich so gefreut, dass ich dieses konstrukt endlich auch mal verwendet habe :D
 
I

irgendjemand

Gast
hmm ... wie gesagt : kann ich persönlich nicht ganz nachvollziehen *obwohl ich auch viel mit sockets rumspiele* ...
liegt wohl daran das ich nur mit Notepad2 und CMD programmiere ... und da ist es ja kein problem mal eben 1 oder 2 terminals gleichzeitig mehr offen zu haben um dann dort server oder anderes laufen zu lassen ...
sollte mir mal überlegen mir ne IDE zuzulegen *oh mich graust es jetzt schon vor kaputten lib-pfaden ...*

ansonsten dir auch frohe weinachten und schön das ich dir den nötigen denkanstoß geben konnte ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Java RMI bricht ab wenn Remote eine Methode ausgeführt werden soll Netzwerkprogrammierung 5
D path-Variablen in eine URL hinzufügen mit Java 1.8 Netzwerkprogrammierung 2
T Webserviceaufruf verursacht eine Exception Netzwerkprogrammierung 3
B Codierung bei der Anbindung an eine REST API Netzwerkprogrammierung 3
L Socket Wie kann ich checken ob ein User eine Nachricht per Outputstream an den Server gesendet hat? Netzwerkprogrammierung 1
X Mit Java eine Applikation auf einem anderen Windows Rechner (Windows Server 2008) starten Netzwerkprogrammierung 1
H Socket Java | Server sendet Nachricht nur wenn vorher eine JOptionPane-Nachricht ausgegeben wurde. Netzwerkprogrammierung 2
P Eine etwas andere Frage: Sicherheit Netzwerkprogrammierung 5
I Server schickt eine Nachricht an Broadcast Netzwerkprogrammierung 2
M Server nur für eine Aufgabe Netzwerkprogrammierung 2
L ActiveMq - wie kann ich eine Queue löschen? Netzwerkprogrammierung 2
N über Java in eine Text-Datei auf einem Server schreiben Netzwerkprogrammierung 2
C ObjectInputReader wirft beim zweiten Aufruf eine Exception Netzwerkprogrammierung 3
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
X Über eine Socket-Verbindung Arrays übergeben Netzwerkprogrammierung 5
H Eine Mac-Adresse übers Internet ermitteln Netzwerkprogrammierung 2
V Alle Ip-Adressen eine Lokalen-Netzwerkes erfragen Netzwerkprogrammierung 9
B Zugriff auf eine Text- und XML-Datei Netzwerkprogrammierung 4
T Tomcat zeigt immer nur eine Seite Netzwerkprogrammierung 3
Q Problem bei Vergleichen von Strings übertragen über eine Socketverbindung Netzwerkprogrammierung 3
E Wie erstelle ich eine blockiernde Funktion? Netzwerkprogrammierung 12
G binden auf eine bstimmte IP und Netzwerkinterface Netzwerkprogrammierung 12
G Warum eine java.net.ConnectException? Netzwerkprogrammierung 7
P eine BufferedReader für alles ankommende Netzwerkprogrammierung 2
M Wie läd man eine HTML Seite in Java runter Netzwerkprogrammierung 2
A Anmeldung an eine Active Directory? Netzwerkprogrammierung 5
T Möglichkeit über das Netzwerk eine Funktion zu starten? Netzwerkprogrammierung 2
F String in eine URL umwandeln Netzwerkprogrammierung 7
M Wie empfange ich eine ftp liste? Netzwerkprogrammierung 12
S GEHT DAS? - Nur eine Frage! (Printer Port direkt ansteuern?) Netzwerkprogrammierung 4
R auf RemotPC eine Applikation starten Netzwerkprogrammierung 10
D Zwei Applikationen eine Liste? Netzwerkprogrammierung 2
X mehrere Request über eine HttpURLConnection Netzwerkprogrammierung 2
K Server Klasse starten Netzwerkprogrammierung 5
P Mit der URL Klasse einloggen... Netzwerkprogrammierung 8
F Kann Klasse nicht zu Servlet casten Netzwerkprogrammierung 5
C Frage zur Klasse DatagramPacket Netzwerkprogrammierung 2
I Problem bei Outputstreamerzeugung in anderer Klasse als Socket Netzwerkprogrammierung 5
C RMI Klasse wird unter falschem Pfad gesucht Netzwerkprogrammierung 4
K Wie mache ich es: Klasse auf Server, Funktionen per Client ausführen? Netzwerkprogrammierung 7
C Problem mit Übertragung einer Klasse in RMI Netzwerkprogrammierung 10
D Telnet-Klasse mit Hindernissen Netzwerkprogrammierung 2
I unc pfad für die klasse file? Netzwerkprogrammierung 4
G Klasse NetworkStream .NET - alternative in Java Netzwerkprogrammierung 2
E InetAddress Klasse-Probleme Netzwerkprogrammierung 4
D URL Klasse: "Intelligente" URL Funktionen ? Netzwerkprogrammierung 4
E Problem bei Sockets/InputStream über externe Klasse Netzwerkprogrammierung 5
M Suche Klasse um Paramater zu einer URL hinzuzufügen. Netzwerkprogrammierung 3
V CORBA: IDLj erstellt wichtige Klasse nicht Netzwerkprogrammierung 3
K kann stub klasse nicht finden ! Netzwerkprogrammierung 8
Icewind Klasse für DNS Anfragen Netzwerkprogrammierung 14
S rmi ClassNotFoundException Stub-Klasse nicht gefunden. Netzwerkprogrammierung 6
R Änderung einer Seite (Klasse URL) Netzwerkprogrammierung 2
F http Post auf einen Grafana Server Netzwerkprogrammierung 3
W Socket Server -> lesen von / schreiben zu php-script Netzwerkprogrammierung 6
E Server mit GUI Netzwerkprogrammierung 4
E FTP FTPS Server gibt Fehlernachricht "522 SSL/TLS required on the data channel" zurück Netzwerkprogrammierung 1
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
L Socket Automatische Zuweisung von Server und Client Rolle Netzwerkprogrammierung 12
Eigenen Rechner als Server? Netzwerkprogrammierung 16
FrankenDerStein HTTP Https Server Bibliothek für Linux und Android gesucht. Netzwerkprogrammierung 7
ExceptionOfExpectation Server/Client-Kommunikation Netzwerkprogrammierung 34
M Server-Client-System für Browsergame Netzwerkprogrammierung 5
J Datei Download vom Server Netzwerkprogrammierung 8
izoards Mehrere TCP Verbindungen auf einen Server [alles Local] Netzwerkprogrammierung 2
Yonnig Threads mit Client/Server und GUI (laufend bis button-click) Netzwerkprogrammierung 9
J Client-Server und SOAP Netzwerkprogrammierung 23
K Threads/Server/telnet Fehler Netzwerkprogrammierung 2
J Multithreaded-Server Netzwerkprogrammierung 21
JaXnPriVate Java HTTPS Server (Secure Sockets) Netzwerkprogrammierung 15
L30nS RMI RMI-Server kann Dialog nicht volkommen anzeigen Netzwerkprogrammierung 2
L30nS RMI Aufruf einer Client-Methode von einem RMI-Server Netzwerkprogrammierung 3
L Server-Socket liest Input-Stream nicht Netzwerkprogrammierung 5
T String von Client zu Server kommt nicht an Netzwerkprogrammierung 92
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
S Von Java auf passwortgeschützten Server zugreifen + Umgang mit Ports Netzwerkprogrammierung 28
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
S Java: Anbindung an einen realen Server? (+ Portfreigabe) Netzwerkprogrammierung 8
D Server - Client Informationsaustausch, Möglichkeiten Netzwerkprogrammierung 3
H Socket Kann ein Socket server 2 dimensionale Arrays empfangen und versenden? Netzwerkprogrammierung 3
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
Z Kann nicht Daten vom Server lesen Socket Netzwerkprogrammierung 10
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
D Slf4j - Logging - Client-Server Architektur Netzwerkprogrammierung 3
F NodeJs-Server auf Firebase hosten ? Netzwerkprogrammierung 3
J client server mit nur einem PC Netzwerkprogrammierung 33
M Socket Nachricht von TCP-Client an Server schicken Netzwerkprogrammierung 12
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
H HTTP Glassfish (v5) Application Server - Bibliothek zur Verfügung stellen Netzwerkprogrammierung 4
B HttpClient - Server (Jetty) - getInputStream - EOF Netzwerkprogrammierung 3
P TCP-Server Netzwerkprogrammierung 1
R Socket FATAL EXCEPTION MAIN bei Socket based client/server app Netzwerkprogrammierung 2
F Server für Java Applikationen Netzwerkprogrammierung 16
H Einfacher Server funktioniert nicht Netzwerkprogrammierung 1
G Server-Client IO Problem Netzwerkprogrammierung 6
T Mikrofonaudio über Java Server an Webbrowser streamen Netzwerkprogrammierung 13
I Socket Das erste Server-Client Programm Netzwerkprogrammierung 16
T HTTPS-Requests an Server: POST-Parameter kommen nicht an Netzwerkprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben