Serverloser UDP Chatclient

c_sidi90

Top Contributor
Huhu,

ich habe einen serverbasierten UDP Chat programmiert, dieser funktioniert auch. Nun wollte ich es aber lieber so lösen, dass jeder Client auch als Server fungieren kann, wenn z.B. kein anderer Rechner im Netzwerk aktiv ist oder der Rechner der erste am Arbeitsbeginn gestartet ist.

Also es sollen dann Broadcast msg gesendet werden, und jeder Client prüft ob das package an ihn addressiert ist und akzeptiert es dann.

Habe irgendwie keinen Ansatz wie ich das lösen kann, kennt einer ein Tut dafür oder kann mir einen Tritt verpassen der mich zum Anfang führt?

Mfg
 

chalkbag

Bekanntes Mitglied
Du könntest dem client/server zum Start der Anwendung einen broadcast versenden lassen, welcher einen Server erfrägt. Bekommt er keine entsprechende Antwort ("hier ich bin Server") geht er selber in den Servermodus. Client 2 würde auch einen broadcast versenden, von client 1 eine Antwort erhalten und in den client-modus wechseln.
 

ice-breaker

Top Contributor
Klingt sehr stark nach dem "coordinator election problem" und somit suchst du nach einem "leader election algorithm" [1], wie z.B. dem
Bully Algorithmus [2].
Denn dein Problem endet nicht damit, dass du initial einen Master gefunden hast, der den Server spielt, was passiert wenn der Server 4 Clients hatte und dann ausgeschaltet wird? Die Clients müssen sich darüber einigen, wer nun den neuen Master spielt.

Dein Problem kommt aus der Ecke der verteilten Systeme (distributed systems) und da wirst du auch die meisten Lösungansätze finden [3, 4] ;)

[1] Leader election - Wikipedia, the free encyclopedia
[2] Bully algorithm - Wikipedia, the free encyclopedia
[3] Distributed Algorithms (Election Algorithms)
[4] http://home.dei.polimi.it/fornacia/didattica/labsw0304/2004ElectionAlgorithms.pdf
 
Zuletzt bearbeitet:

c_sidi90

Top Contributor
Da hatte ich auch schon reingeschaut, danke für die Links.

Ich habe jetz beim Start des Clients eine Methode geschrieben welche einen Socket initialisiert und versucht auf einem festgelegten Port eine Antwort von einem Server zu erhalten, schlägt dies fehl, wird eine boolean auf false gesetzt und die Methode wird gestartet, welche den Client als Server arbeiten lässt. Ich melde mich wenn Probleme auftauchen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Chatclient JApplet Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben