Laden...

[Frage] Multiconnection mittels TCP realisieren

Erstellt von Doltsche vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.298 Views
D
Doltsche Themenstarter:in
249 Beiträge seit 2009
vor 13 Jahren
[Frage] Multiconnection mittels TCP realisieren

Hallo zusammen

Gibt es eine Möglichkeit, sich auf Basis des TCP-Protokolls mit mehreren Clients gleichzeitig zu verbinden? Es handelt sich dabei um ein Peer-To-Peer Netzwerk.
Zwar liese sich das Problem mit UDP lösen, da es bei diesem Protokoll gar nicht erst eine Verbindung benötigt allerdings ist UDP nicht sonderlich sicher.

LG Doltsche

P.s: Anbei befindet sich eine grafische Darstellung meines Ziels.

888 Beiträge seit 2007
vor 13 Jahren

Naklar ist das möglich, dazu musst du nur mehrere Ports aufmachen.

479 Beiträge seit 2008
vor 13 Jahren

Hallo Doltsche,

IMHO ist das mit TCP nicht möglich, da dies ja ein verbindungsorrientiertes Protokoll ist. Wenn auf jedem Client aber auch ein Server läuft (was glaub ich nicht dein vorhaben (direkt) ist) sollte das möglich sein.

mfg.
markus111

[Follow me on Twitter](http://twitter.com/blendingsky)
D
Doltsche Themenstarter:in
249 Beiträge seit 2009
vor 13 Jahren

Hallo zusammen

Na ja, bleibt mir wohl nicht viel anderes übrig als UDP zu verwenden oder hald ein Server. Mal schauen ob an meinem Arbeitsplatz einer zur Verfügung stünde =)

Allerdings kann ich mir nicht so wirklich vorstellen wie das gehen sollte wenn auf jedem Client zusätzlich noch ein Server läuft. Denn dann werden die Server wiederum zu Clients wodurch wir beim selben Problem angelangt sind.

LG Doltsche

S
8.746 Beiträge seit 2005
vor 13 Jahren

Denn dann werden die Server wiederum zu Clients wodurch wir beim selben Problem angelangt sind.

  1. Server beissen nicht
  2. Server und Client sind nur _Rollen _in einer Kommunikations-Beziehung.
  3. Ob UDP oder TCP ist in diesem Kontext schnuppe, wer Daten als "Anfrage" empfängt ist per Definition ein Server.

P2P unterscheidet sich von dem klassischen Client-Server-Modell nur dadurch, dass es eben nicht nur _einen _Server gibt, sondern jeder Teilnehmer immer zugleich Client und Server ist.

Was du beschreibst ist also kein _Problem _sonden die Natur von P2P.

Zum Problem wird ein Server nur dann, wenn eine Firewall oder NAT die Funktion als Server verbietet.

Gelöschter Account
vor 13 Jahren

Zum Problem wird ein Server nur dann, wenn eine Firewall oder NAT die Funktion als Server verbietet.

jap, das ist die kunst beim P2P, da das meist über internet geht und immer NAT und Firewalls dazwischen liegen. hier eignet sich dann das sogenannte "hole punching". ist nicht gerade trivial in der umsetzung aber es funktioniert gut 😃

Gelöschter Account
vor 13 Jahren

das framework bietet dir im übrigen auch P2P :
Peer-to-Peer Programming with WCF and .NET Framework 3.5

außerdem habe ich einige freie libs gefunden, die die komplizierten dinge wie tunneln auch schon können. komplett in c#.

S
72 Beiträge seit 2006
vor 13 Jahren

Hallo zusammen

Gibt es eine Möglichkeit, sich auf Basis des TCP-Protokolls mit mehreren Clients gleichzeitig zu verbinden? Es handelt sich dabei um ein Peer-To-Peer Netzwerk.
Zwar liese sich das Problem mit UDP lösen, da es bei diesem Protokoll gar nicht erst eine Verbindung benötigt allerdings ist UDP nicht sonderlich sicher.

Selbstverständlich ist das möglich. TCP ist eine reine Unicast Verbindung. Das bedeutet aber nicht, das du nicht mehrere Verbindungen herstellen kannst.

Große P2P Programme, wie eMule nutzen auch TCP. Threading und asynchrone I/O machen es möglich.

Ein Tutorial gibt es hier.

http://www.codeplanet.eu/tutorials/csharp/4-tcp-ip-socket-programmierung-in-csharp.html

Ganz nett ist auch das hier.

http://www.codeplanet.eu/tutorials/java/57-battleship.html

Dort wird eine P2P-Bibliothek mit TCP vorgestellt.

“Ene mene mu und raus bist Du!”