Laden...

2 Clienten mit einander Verbinden

Erstellt von BangerzZ vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.366 Views
B
BangerzZ Themenstarter:in
45 Beiträge seit 2009
vor 12 Jahren
2 Clienten mit einander Verbinden

Ich plane zurzeit ein Projekt bei dem viele Clienten mit einander kommunizieren müssen. Dabei habe ich zwar ein zentralen Server dieser soll aber eigentlich nur zur Vermittlung dienen und somit möglichst wenig Traffic generieren.

Jetzt ist halt das Problem das ich nicht weiß wie ich 2 Clienten miteinander verbinden kann, ohne das ich in deren Router Portforwarding einstellen muss um auf die herkömmliche Methode zu verbinden.

Hätte vlt. jemand von euch einen Denkanstoß?

6.911 Beiträge seit 2009
vor 12 Jahren

Hallo BangerzZ,

als Idee unter Annhamen von Client A und Client B, sowie Server S. Die Idee würde ich mit WCF umsetzen, geht aber auch mit anderen Technologien.

Alle Clients registrieren sich beim Server, damit diser weiß wem er zu "betreuen" hat.1.A sendet einen Request an S, dass er sich mit B verbinden will. 1.S informiert B dass dieser als ServiceHost arbeiten soll. 1.S sendet die Adresse von B zu A. 1.A kann sich nun direkt mit B verbinden, dabei ist B der Server und A der Client. Mittels Duplex-Vertrag (wie z.B. NetTcpBinding) kann in beide Richtungen kommuniziert werden. 1.A und B haben ausgeredet. Einer der beiden sendet S diese Info und B kehrt wieder in den "normalen" Modus zurück.

Das ganze ist nicht recht aufwändig, wichtig ist nur dass die Verhandlungen bzgl. Adresse und Verbindungsart über S laufen.

Oder hast du was anderes gemeint?

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

B
BangerzZ Themenstarter:in
45 Beiträge seit 2009
vor 12 Jahren

Ja das grundlegende Problem sehe ich darin, dass ein Client der hinter einem Router sitzt nicht als Server für die Verbindung von A nach B dienen kann weil die Verbindung die A versucht auf zu bauen in der Regel doch einfach vom Router von B abgelehnt bzw, nicht angenommen wird.

6.911 Beiträge seit 2009
vor 12 Jahren

Hallo BangerzZ,

mit dem Router hatte ich da noch nie Probleme (wahrscheinlich da Portforwarding eingestellt ist), nur die Firewall muss am entsprechenden Port freigeschalten werden. Es gibt aber Tricks wie über Port 80 kommuniziert werden kann. Wie genau das geht weiß ich jetzt nicht, aber das lässt sich herausfinden und ich denke im Forum wurde das auch schon besprochen.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

B
BangerzZ Themenstarter:in
45 Beiträge seit 2009
vor 12 Jahren

Aber das ist doch gerade das Problem.

Sagen wir ich habe Netzwerk A und B, dazu Klient A1 und B1.

Wenn jetzt in Netzwerk B mehrere Rechner sind, dann wüsste der Router aus diesem Netzwerk ja nicht an wen es die Verbindung von A1 weiterleiten soll.

Vlt muss ich deutlich dazu sagen das sich die Klienten übers Internet verbinden sollen und sich somit nicht im gleichen LAN befinden.

6.911 Beiträge seit 2009
vor 12 Jahren

Hallo BangerzZ,

zumindest für HttBindungen musste ich weder am Router noch an der Firewall etwas extra konfigurieren. Das klappt problemlos, aber es kommt halt auch auf Router und Firwall darauf an. Ich weiß aber nicht wie die Dinge heißen die bei uns eingesetzt werden.
Andere Bindungen, außer HTTP-basierte, scheiden bei dir ja auch aus.

Ich hab mal (ähnliche Themen) gesucht, schau dir die mal an:
WCF Verbindung via Internet
Net.TCP Port Sharing
Working with NATs and Firewalls

Wenn davon nix in Frage kommt, bzw. nicht funktioniert bleibt nicht viel übrig als die Kommunikation über den zentralen Server laufen zu lassen.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

B
BangerzZ Themenstarter:in
45 Beiträge seit 2009
vor 12 Jahren

Ok danke ich habe es jetzt geschafft via Upnp port forwarding zu verwenden. Eine gute Lib. findet sich unter http://code.google.com/p/upnplib/.

3.170 Beiträge seit 2006
vor 12 Jahren

Hallo,

Jetzt ist halt das Problem das ich nicht weiß wie ich 2 Clienten miteinander verbinden kann, ohne das ich in deren Router Portforwarding einstellen muss um auf die herkömmliche Methode zu verbinden. Für dieses Vorhaben könntest Du Dir mal UDP Hole Punching ansehen. Das ist auch die Technik, mit der z.B. Skype Direktverbindungen zwischen 2 Clients ermöglicht, die beide hinter einer Firewall sitzen. Bei Freund Google solltest Du mit diesem Stichwort etliche Informationen finden.
Das Prinzip ist ganz gut in dem Heise-Artikel Der Lochtrick beschrieben.

Gruß, MarsStein

EDIT: UPNP mag ja schön und gut sein, wird aber

  1. nicht von allen Routern unterstützt
  2. muss auf dem Router i.d.R. erstmal aktiviert werden

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca