| 

.NET C# Java Javascript Exception

1
Hallo,

ich bin gerade dabei (just4fun) eine Anwendung zu schreiben welche quasi wie ein Messanger funktioniert. Diese soll später nicht nur Nachrichten, sondern auch Daten in Form von Dateien übertragen können. Umgesetzt wird das ganze ganz "einfach" via herkömlicher Socketverbindungen.
Die Clients sind mit dem Server verbunden, senden Ihre Nachrichten an den Server, dieser verteilt die Nachrichten an den oder die entsprechenden Clients. So weit alles klar.
Nun plane ich gerade ein Konzept zur Datenübertragung. Bei den ersten Gedanken ist mir bewusst geworden das ich die Daten nicht vom Client an den Server und dann ans Ziel übertragen möchte. Das wäre zwar recht einfach zu realisieren hätte aber diverse Nachteile die eigentlich ein K.O. Kriterium sind.


    - Flaschenhals bei der Übertragungsgeschwindigkeit
    - Direktübertragung schwierig, da Daten "im Speicher" gepuffert werden müssten.
    - Flaschenhals bei der Systemleistung des Servers
    - Privacy...


Die Alternative wäre es, einen der beiden Clients zu sagen, dass sie ein Socket auf "Dateitransfer Port XY" aufmachen und den Datentransfer so quasi peer2peer durchzuführen.
Das wäre eigentlich perfekt. Problem hier ist das ich davon ausgehe, dass beide Clients ganz normal hinter einem Router sitzen und das "aufmachen" des Sockets mir nichts bringt, weil der andere Client das System nicht erreichen wird, bzw. schlicht nicht durch den Router kommen wird.

Nun ist meine Frage, ob es eine Möglichkeit gibt das "Routerproblem" zu umgehen. Bekomme ich eine Socketverbindung zwischen den zwei Clients aufgebaut, ohne dass ich auf ein Portforwarding angewiesen bin?

Für den Fall das es eine Rolle spielen sollte: Die eingesetzte Technologie ist .Net (Client) und JAVA (Server).
News:
29.09.2014
Slashi 409 2 8
1 Antwort
1
Mittels Universal Plug and Play (UPnP) kann ein Client den Router anweisen bestimmte Ports durchzuleiten.

.NET Framework: Communicate through NAT Router via UPnP (Universal Plug and Play)

Idealer weser kombiniert man das ganze noch mittels eines HTTP-Interfaces über das die Client kommunizieren weil man dann auch das Problem der Proxy's umgeht.
29.09.2014
Floyd 14,6k 3 9
Ich bin den Text gerade mal einmal überflogen... Klingt verdächtig genau nach einer Lösung :) Danke!
Slashi 29.09.2014

Stelle deine Socket-Frage jetzt!