UDP Chatprogramm auf Client/Server Basis

Status
Nicht offen für weitere Antworten.

Yezariael

Mitglied
Hallo allerseits,

wir müssen ein TCP Chatprogramm auf UDP umschreiben.
Kurz gesagt, die Funktionalität von TCP in UDP nachprogrammieren.

Das ganze basiert auf einer Client/Server Basis, wir haben also einen Chatserver der alles verwaltet und n-Clients die sich anmelden.

Funktioniert an sich auch alles problemlos.

Ich komme nur an folgender Stelle nicht weiter:
Da alle Instanzen (Der Server und _alle_ Clients) auf der selben Maschine ausgeführt werden haben entsprechend
auch alle Clients die selbe IP und den selben Port.

Wenn ich jetzt vom Server eine Nachricht an alle Clients schicken möchte fehlt mir irgendwie das notwendige Unterscheidungsmerkmal, da alle auf dem selben Port "lauschen".

Mein erste Gedanke war einfach jedem Client bei Login einen eigenen Port zu verpassen, aber irgendwie kanns das ja auch nicht sein.

Für Vorschläge und Ratschläge wäre ich sehr dankbar.

Gruß

Yezariael
 
Käme da nicht auch TCP durcheinander? ???:L
Naja, du kannst ja jedes Datenpaket mit einer zuätzlichen Empfängerkennung markieren, nach der dann jeder Client entscheidet, ob ihn das was angeht und ggf. weiterliest oder das Paket schnell wieder vergisst.
Oder hab ich da was übersehen?
 
Das wäre die andere Möglichkeit. Jedem Client eine ID zu verpassen und beim senden einer Nachricht an alle Clients durchiterieren bis alle "ID's" die Nachricht bekommen haben.

Das dürfte dann aber mit der zweiten Zielstellung, das das ganze möglichst performand ablaufen soll kollidieren.
Weil dann ab einer bestimmten Clientanzahl doch ne ganze Menge unnötiger Requests hin und hergeschickt werden.

Hmm im Moment arbeite ich einfach so weiter, das jeder Client einen Port ab 8205 und aufwärts bekommt.

Aber irgendwie ist das alles nicht so ganz das wahre.
 
Ich glaube wenn du bei den clients im DatagramSocket keinen port definierst, bekommen die automatisch einen. Die unterscheiden sich dann auch alle. Die müssten dann quasi eine Verbindungsanfrage zum Server schicken, damit der dann die ip und den port der anfrage abfragen und speichern kann.
 
Ich glaube wenn du bei den clients im DatagramSocket keinen port definierst, bekommen die automatisch einen. Die unterscheiden sich dann auch alle. Die müssten dann quasi eine Verbindungsanfrage zum Server schicken, damit der dann die ip und den port der anfrage abfragen und speichern kann.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben