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.
Naklar ist das möglich, dazu musst du nur mehrere Ports aufmachen.
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
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
Denn dann werden die Server wiederum zu Clients wodurch wir beim selben Problem angelangt sind.
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.
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 😃
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#.
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!”