# TCP und UDP verbinden?



## Ljonja2107 (14. Okt 2022)

Moin, gibt es eine Möglichkeit, dass ich die beiden Protokolle wie folgt verbinde?
Ich habe ein Chatprogramm (TCP) und ein Server und ein Client verbindet sich über einen Port.
Nun möchte ich eine Onlinestatusanzeige implementieren.
Über TCP können sich nur 2 verbinden und über UDP sollen sich alle anmelden können und eine Chatanfrage stellen.
Wenn diese angenommen wird, dann wird die Verbindung unterbrochen zwischen den vorherigen Chattern und eine neue Verbindung wird aufgebaut (in der dann auch z.B. der Client zum Server werden muss).


----------



## Robert Zenz (14. Okt 2022)

Wieso? (Frage ich das in letzter Zeit haeufiger?) Nein, echt, wieso?!

Wieso willst du das so machen und trennen, das ergibt keinen Sinn. Ist das eine Uebung oder eine Aufgabe von jemandem? Also das so zu implementieren auf einem _normalen_ System ergibt keinerlei Sinn, meiner Meinung nach. Das klingt nur nach Komplexitaet die unnoetig ist.


----------



## Ljonja2107 (14. Okt 2022)

Robert Zenz hat gesagt.:


> Wieso? (Frage ich das in letzter Zeit haeufiger?) Nein, echt, wieso?!
> 
> Wieso willst du das so machen und trennen, das ergibt keinen Sinn. Ist das eine Uebung oder eine Aufgabe von jemandem?


genau, ist ne Aufgabe


----------



## Robert Zenz (14. Okt 2022)

Oohhhkay...okay.

Also wenn ich das richtig verstehe, dann willst du einen TCP Kanal zwischen zwei Leuten, und die koennen UDP-Pakete empfangen fuer Anfragen und dann auf die andere Gegenstelle umschwenken. Wenn ich mich richtig erinnere, und da wuerde ich nicht darauf wetten, koennen Sockets sowohl TCP als auch UDP empfangen, also du musst eigentlich auf Java Ebene nur unterscheiden ob es eine Nachricht von der Gegenstelle ist, oder eine Anfrage von einem anderen. Aber da bin ich mir gerade nicht sicher.


----------



## Ljonja2107 (14. Okt 2022)

Nicht ganz, der Nachrichtenaustausch läuft über TCP(damit keine Datenpakete verloren gehen) und mit der UDP Verbindung will ich quasi nur anzeigen, dass die beiden grade verbunden sind.Anhand der Anzeige, dass jemand Online ist kann ich dann Anfragen, ob jemand einen neuen Chat starten will (auch die, die schon am chatten sind). Falls die dann akzeptieren, dann müsste ja möglicherweise ein Client die Serverrolle übernehmen, da der vorherige Client mit der Serverrolle vielleicht offline gegangen ist. War das verständlich ?
Sind 2 verschiedene Themen, einmal Statusanzeige/Verbindungsanzeige und dann das switchen zwischen den Clients und Serverrollen.


----------



## Jw456 (14. Okt 2022)

Hallo
Also ich verstehe  das etwa so.
Jeder Teilnehmer wenn er online ist wäre also einmal

TCP Server der auf anfragen zum Chat wartet.
Ein UTP Broadcast, Multicast, Cient der seinen Status in regelmäßigen abständen  kund tut.
Da Du ja auch UTP Broadcast, Multicast  nachrichten empfangen willst müsstest du auch Server  sein.

Fragst du einen Teilnehmer an zum Chat wird wider ein Port geöffnet der sich zu dem Teilnehmer verbindet.

Bist du schon in Chat und ein zweiter kommt hinzu braucht der TCP Server doch nur alle Nachrichten auch an den zweiten weiter  zuschicken.
Dazu halte in einer liste alle verbundnen Sockets.
 Geht ein  Teilnehmer offline  wird er auf dem  Server  aus der Client-Socket  Liste entfernt und die Unterhaltung geht alleine weiter.


Du willst ja ohne einen Zentralen Server  arbeiten.


----------

