Autor Beitrag
Ccenter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 154

Win7
C#
BeitragVerfasst: Sa 24.07.10 14:05 
Hallo,
ein Freund und ich haben gestern einfach mal aus Spaß versucht ein Chatprogramm zu schreiben.
Wir haben das dann ersteinmal bei mir Zuhause mit lokalen Ip's getestes, was auch dann auch alles gut geklappt hat bis auf ein paar "Kinderkrankheiten".
Der Client konnte sich gut mit dem Server verbinden etc...
Nunja, er hat das Programm dann halt mit nach Hause genommen und wir wollten dann per Telefon irgendwie probieren, das Programm übers Internet (ausserhalb des Netzwerkes)
zum laufen zu bekommen. Uns war natürlich klar, dass die lokalen Ip's dort keinen Sinn mehr hatten.
Das Problem besteht nun aber darin, dass von uns beiden dynamische Ip's verwendet werden und da wir beide hinter einem Router sitzen, "Nat" dafür sorgt das
der Client den Server nicht mehr erreichen kann.
Vorab: Besteht mit C# überhaupt die Möglichkeit durch Nat zu kommen? Wenn ja wäre mir da ein Tipp sehr gelegen... :D

So, da wir an dieser Stelle nicht weiter gekommen sind, hatte ich die Idee, irgendwie einen Webserver auf die Beine zu stellen, der dann sozusagen als "Verteiler" fungiert und wir beide jeweils einen Clienten verwende, der den Webserver "anruft" und die Daten dann irgendwie von diesem auch abholt. So wäre das Problem mit Nat ersteinmal umgangen.
Ist das der richtige Weg dafür?
Flitzs
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 123
Erhaltene Danke: 7

Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
BeitragVerfasst: Sa 24.07.10 17:22 
user profile iconCcenter hat folgendes geschrieben Zum zitierten Posting springen:

Vorab: Besteht mit C# überhaupt die Möglichkeit durch Nat zu kommen? Wenn ja wäre mir da ein Tipp sehr gelegen... :D


Das hat mit C# direkt nichts zutun. Es gibt mehrere Möglichkeiten, ein Programm über NAT laufen zu lassen.
Einerseits kann man natürlich den Port im NAT-Device (ich nehme an einem Router) manuell weiterleiten lassen.

Wenn du diest nicht möchtest gibt es noch die Möglichkeit, dies über UPnP aus dem Programm heraus einzurichten (sofern das NAT-Device dies unterstützt).

user profile iconCcenter hat folgendes geschrieben Zum zitierten Posting springen:

So, da wir an dieser Stelle nicht weiter gekommen sind, hatte ich die Idee, irgendwie einen Webserver auf die Beine zu stellen, der dann sozusagen als "Verteiler" fungiert und wir beide jeweils einen Clienten verwende, der den Webserver "anruft" und die Daten dann irgendwie von diesem auch abholt. So wäre das Problem mit Nat ersteinmal umgangen.
Ist das der richtige Weg dafür?


Hier gibt es 2 (mir bekannte) Möglichkeiten wie ihr damit zu Ziel kommt:

  1. Die Programme können sich beim Start am Server anmelden und kommunizieren über den Server miteinander. Der Server leitet einfach alle Nachrichten von A nach B weiter und umgekehrt
  2. Oder ihr benützt UDP hole punching bzw. TCP hole punching


Was für eure Zwecke am geeignestens ist, müsst ihr selbst entscheiden.

mfg Flitzs
Ccenter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 154

Win7
C#
BeitragVerfasst: Mo 26.07.10 15:13 
Ok danke, wir habens zum Laufen bekommen =)
Es hat gereicht in der Fireall einzustellen, dass ein bestimmter Port
zu mir/ihm weitergeleitet werden soll.
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mo 26.07.10 17:08 
user profile iconCcenter hat folgendes geschrieben Zum zitierten Posting springen:
Das Problem besteht nun aber darin, dass von uns beiden dynamische Ip's verwendet werden

Falls das immer noch ein Problem sein sollte (ist ein bisschen doof, über das Telefon IP-Adressen auszutauschen, bevor man über's Internet chatten kann ;)), schau dir mal dyndns.com an :idea: