Laden...

udp verbindung

Erstellt von Coooder vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.339 Views
C
Coooder Themenstarter:in
180 Beiträge seit 2011
vor 12 Jahren
udp verbindung

hi,
ich habe veruscht eine UDP verbindung aufzubauen und hab das beispiel von der msdn verwendet
C# Tipps, Teil 2 - Netzwerk und Internet
und es hat auch funktioniert, zumindest intern ... von meinem laptop zu meinem rechner und umgekerht konnte ich mir dann nachrichten schicken, jedoch als ich es mit nem anderen rechner probiert habe der nich an meinem router hängt klappt es nicht ... also es kommt keine fehlermeldung oder so, man empfängt die nachrichten einfach nur nich 😕

wisst ihr wo das problem liegt? Firewalls sind auch ausgeschaltet

W
872 Beiträge seit 2005
vor 12 Jahren

Fuer so ein Problem solltest Du Dir WireShark ansehen...dann siehst Du auf Netzwerkebene, was kommt/nicht kommt. Routing kann auch immer ein Problem sein....

C
Coooder Themenstarter:in
180 Beiträge seit 2011
vor 12 Jahren

hmm naja aber wenn es ankommen würde, müsste es doch mein programm sehn oder nich?

P
157 Beiträge seit 2010
vor 12 Jahren

Es könnte an deinem Router liegen.
In der Regel blockieren die Router von außenkommende Packete, wenn keine Portweitergabe definiert wurden ist, und du selber nicht das erste Packet geschickt hast.
Wenn sich also einer der beiden Clients (der Server) hinter einer Firewall (seiner eigenen oder die des Routers) versteckt, dann werden alle ankommenden Packete blockiert. Durchgelassen werden sie erst, wenn du die Funktion deaktivierst, oder wenn du der Server ein Packet an deinen CLient sendet, da dann die ankommenden Packete als Antwirt interpretiert werden.

(siehe auch UDP Hole punching)

C
Coooder Themenstarter:in
180 Beiträge seit 2011
vor 12 Jahren

oookay habs hinbekommen 😃
ich musste das portforwarding einstellen ^^

allerdings is das auch irgentwie doof wenn jeder user erst portforwarding einstellen muss ... wie is das denn sonst gelöst? zumbeispiel bei spielen oder so ... da muss man ja auch nie sowas einstellen ... oder sonstigen programmen wie skype oder icq ect.

P
157 Beiträge seit 2010
vor 12 Jahren

über Hole punching z.B.
Ein Vermittlungsserver schickt die IPEndPunkte an beide Clients, die schicken Daten an den jeweiligen. Alle von dort kommenden Daten werden dann als Antwort interpretiert --> sie werden nicht geblockt (Bsp.: Skype)

D
216 Beiträge seit 2009
vor 12 Jahren

wie is das denn sonst gelöst? zumbeispiel bei spielen oder so ... da muss man ja auch nie sowas einstellen

Doch, da musst du auch Portforwarding einstellen, damit es geht. ICQ und ähnliches läuft auf Servern, bei denen das schon eingestellt ist (muss ja nur beim Server weitergeleitet werden), deswegen bekommen die Clients davon nichts mit. Skype und andere P2P-Programme arbeiten meistens mit Hole Punching.

Darth Maim

C
Coooder Themenstarter:in
180 Beiträge seit 2011
vor 12 Jahren

ahh ok ... also müssen die user bzw. die clients einfach nur was zu dem server schicken.
und der server schickt dann einfach ne antwort und das kommt dann durch zu den clients ... ok cool, perfekt 😃

danke euch

691 Beiträge seit 2007
vor 12 Jahren

allerdings is das auch irgentwie doof wenn jeder user erst portforwarding einstellen muss ... wie is das denn sonst gelöst? zumbeispiel bei spielen oder so ... da muss man ja auch nie sowas einstellen ... oder sonstigen programmen wie skype oder icq ect.

Ein normaler Benutzer zu Hause sitzt hinter einem NAT-Router. Dieser lässt sich mit einer zustandsbehafteten Firewall vergleichen.
Bei NAT-Routern ist in der Regel so, dass eingehende TCP-Verbindungen nicht durchgekommen werden, da der NAT-Router nicht weiß, an welchen Rechner er die TCP Segmente weiterleiten soll. Das resultiert daraus, dass ein NAT-Router sowohl Quell-IP und Quell-Port verändert.
Bei ausgehenden TCP-Verbindungen merkt sich hier der NAT-Router, inwiefern er hier die Abbildung in die Rückrichtung machen muss.

Bei eingehenden TCP-Verbindungen gibt es jedoch in der NAT-Tabelle keinen Eintrag, es sei denn du hast manuell die Tabelle verändert, oder dein Programm verwendet ein Protokoll, was im Router einen Port freischaltet.

Beim Start von ICQ baust du eine TCP-Verbindung zu deren Masterserver auf, um dich "einzuloggen", also deinen Status auf online zu setzen, und dem Server deine aktuelle IP mitzuteilen. (Wie genau hier die Kommunikation zwischen den Clients stattfindet, müsstest du selber nachlesen, dass weiß ich gerade nicht)

Skype hat in das Protokoll die Möglichkeit eingebaut, dass wenn beide Kommunikationspartner hinter einem NAT-Router sitzen, dass die Verbindung über eine Supernode relayed wird, wobei die Supernode in der Regel ein Computer mit viel Bandbreite und ohne NAT ist. Das schöne am Geschäftsmodell von Skype ist, dass eine Supernode nicht ein Rechner von Skype selber seien muss, sondern auch ein Benutzer mit viel Bandbreite seien kann, ohne das Skype diesem Benutzer dafür Geld zahlt.

mit freundlichen Grüßen,
Tomot

Projekte: www.gesellschaftsspieler-gesucht.de