UDP über Internet?
Übersicht

![]() |
JeanBetreff: UDP über Internet? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
Ich habe eine kleine Frage zu UDP.... Also angenommen ich gehe über einen Router ins Internet... und meine Ip innerhalb des Routers ist z.b. "192.168.1.39 -> -1062731481" Die IP mit der ich via Router im Internet bin ist "81.62.184.74" Wenn mir jetzt angenommen jemand aneres eine Nachricht senden möchte, wie muss er es dann anstellen das die Nachricht bis zu mir durchkommt? Bitte antwortet mir jetzt bitte nicht das man UDP nur im Netzwerk anwenden kann... Helft mir! ![]() ![]() ![]() THX |
||
![]() |
Bigmichi |
![]() Antworten mit Zitat ![]() |
---|---|---|
du must deinem Router sagen das er den besimmten Port an deien IP "weiterleiten" soll z.b. bei mir im Router unter Virtuelle Server...
oder du sagst deinem Router das alle Ports zu deinem PC geleitet werden soll geht bei mir zumindestens bei DMZ beim Router.... musst du einfach mal suchen beim router ![]() |
||
![]() |
Jean |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gibt es keinen einfacheren Weg? Ich glaube kaum das alle Benutzer meines Games in der Lage sein werden selbst etwas an ihrem Router zu ändern.... | ||
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die müssen ja auch nicht, das muss nur der server. die clienst können hinter den dicksten firewalls stecken, das juckt net. | ||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn router benutzt werden, muss man halt Ports freigeben, sonst kommt nichts durch.
korrigiert mich bitte falls es völlig schwachsinnig ist, was jetzt folgt Der port 80 müsste ja standardmäßig freigeschaltet sein, also hättest du schonmal einen Port, worüber du kommunizieren kannst, wenn ich jetzt nicht ganz falsch liege, braucht man aber 2 ports, einen zum empfangen, und einen zum Senden. Die für dich einfachste möglichkeit scheint mir aber, dass du in deinem Spiel und zusätzlich in ner Datei darauf hinweist, zw erklärst, wie die User das machen, also mit ports freischalten, zudem wäre es vlt sinn voll die Ports vom Benutzer selber auswählen zu lassen, damit man nicht erst das Prog wieder beenden muss, in die Routerconfig gehen und dann das Prog wieder starten. Aber mein Wissen ist da noch sehr beschränkt, weil ich sowas noch nie gemacht habe |
||
![]() |
Jean |
![]() Antworten mit Zitat ![]() |
---|---|---|
regaa: Und wie würde dann der BB Code dazu aussehen? | ||
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://www.blitzbase.de/menu/2w.htm Sorry hab kein besseres Beispiel parat.
Man verwendet nicht unbedingt Ports die unter 1024 liegen, damit kann es zu falschen Kommunikationen kommen. Nein, man braucht keine 2 verschiedenen Ports. Anleitung ist nur für Serverbetrieb notwendig. CLients müssen nix über Routerkonfiguration wissen, es sei denn der Client selber ist ein Server. |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
![]() |
Jean |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, das kenne ich mit den Ports... ich verwende den Port 1234. Aber da mein Spiel "Peer to peer" läuft brauch ich doch Infos über den Roter... also ich blicke immo nicht ganz durch... Heisst das jetzt das auf dem Router nur der verwendete Port frei sein muss und dann läufts? Kann man dan ganz normal an die "interne" IP von Aussen eine Nachricht schreiben mit den ganz normalen UDP Befehlen?
Also z.b. so: BlitzBasic: [AUSKLAPPEN]
THX |
||
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jean hat Folgendes geschrieben: Ja, das kenne ich mit den Ports... ich verwende den Port 1234. Aber da mein Spiel "Peer to peer" läuft brauch ich doch Infos über den Roter... also ich blicke immo nicht ganz durch... Heisst das jetzt das auf dem Router nur der verwendete Port frei sein muss und dann läufts?
Ports sind immer frei, sie können am router höchstens nicht geforwardet werden oder zu einem falschen rechner den es gar nicht gibt geforwardet werden (weitergeleitet werden). Angenommen du stellst am Router ein das Port 1234 auf die ip 192.168.1.55 umgeleitet wird. Dies wird noch nicht heissen das eine Kommunikation statt finden kann. Es benötigt ein Server der an der 192.168.1.55 auf den Port 1234 hört und die Nachricht von 217.182.82.6 (nur ein fiktives Beispiel) beantwortet. Das kann der Client im Netzwerk jedoch nur tun, wenn er weiß dass das Paket für ihn bestimmt ist und das passiert nur wenn es dem Router gesagt wird. (V-Server->Port-Forwarding) |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
![]() |
Jean |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und wie kann ich nun via BlitzPlus am Router den Befehl geben er müsse den Port weiterleiten? Ich nehme jetzt mal an das sowas nicht möglich ist... also muss man etwas am Router einstellen... Aber wie wurde es dann bei anderen Multiplayer Games gegmacht? Die laufen doch auch problemlos über den Router... schade ![]() ![]() ![]() THX |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sie verwenden kein UDP, dann gehts beträchtlich besser. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Jean |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gibt es Ports welche standartgemäss an alle PC`s in einem Netzwerk vom Router weitergeleitet werden? THX | ||
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schau dir bitte blitzbase.de nach netzwerkbefehlen an und google mal nach netzwerktechnik. Das ist ein sehr Umfangreiches Thema, aber bitte, wenn du es so sehr verstehen willst ohne auf mein Rat zu hören. | ||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
Nox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mittlerweile glaube ich echt, dass BB das falsche Werkzeug ist, um die Kommunikation über Sockets zu lernen, da sie irgendwie nicht verständlich gemacht wird.
Vielleicht kann ich etwas Abhilfe schaffen: Um mit einem Rechner kommunizieren zu können, müssen beide einen sogenannten Socket erstellt haben, die für diese Verbindung eingerichtet sind. In den meisten Fällen sind diese mit dem TCP-Protokoll verbunden, welches ein Handshaking für den Verbindungsaufbau mit einschließt sowie sich um die korrekte Ankunft von gesendeten Paketen kümmert. Ein Socket wird immer auf einem lokalen Port geöffnet - ob er letztendlich zu einem Rechner verbindet oder auf Verbindungen wartet, spielt keine Rolle (nicht-0815-Firewalls zeigen das an). Ein Beispiel: Rechner 1 eröffnet ein netzwerkfähiges Spiel. Zuerst wird ein TCP-Socket erstellt, der auf Port 1234 lauscht (wichtig: Es ist EGAL(!), auf welchem Port ein Socket gebunden wird. Die Hauptsache ist, dass der Port nicht in Nutzung ist. Also sind auch Portnummern unterhalb 1024 okay). Der Socket ist nun aktiv und listened auf Port 1234 (wartet auf Verbindungen). Rechner 2 möchte nun eine Verbindung zu Rechner 1 aufbauen. Wieder wird ein TCP-Socket erstellt mit der Anweisung, zur IP von Rechner 1 und Port 1234 zu verbinden. Sofern Rechner 1 von Rechner 2 erreichbar ist, findet nun ein Verbindungshandshaking statt - sprich beide Rechner einigen sich und heißen die Verbindung für gültig oder ungültig. Ist sie gültig, steht die Verbindung und es kann über die Sockets kommuniziert werden, wobei sich das TCP-Protokoll um die korrekte Übermittlung kümmert (Hinweis: Über TCP können keine fehlerhaften Pakete ankommen, das ist unmöglich. Denn wenn mal ein fehlerhaftes Paket ankommt oder eins übersprungen wurde, fordert der Empfänger automatisch ein neues an). Soweit, sogut. Hier sprachen wir nun über das TCP-Protokoll. Das UDP-Protokoll verhält sich natürlich ganz anders. UDP ist es egal, ob eine feste Verbindung steht oder nicht, auch ist es dem Protokoll egal, ob Pakete ordnungsgemäß ankommen oder nicht. Nachteil ist, dass der Entwickler entweder mal Paketverluste in Kauf nehmen muss, oder den korrekten Empfang selbst übernehmen muss. Vorteil ist, dass die Pakete nicht so groß wie TCP-Pakete sind. Auch ein UDP-Socket muss erstellt werden und lauscht auf einem Port auf Pakete. Deshalb: Egal, welches Spiel oder welche Anwendung ihr nehmt. Ist ein Router dazwischen, MUSS dafür gesorgt werden, dass die Pakete ihr Ziel erreichen. Dazu mal wieder ein Beispiel: 1-------R-------2 Hier ein Pseudonetzwerk mit zwei Rechnern (1, 2) und einem Router (R). Der Router ist zum Internet verbunden, folglich haben Rechner 1 und Router dieselbe IP von außerhalb(!!!). Rechner 2 hat einen seperaten Internetanschluss und eine eigene IP für draußen. Allerdings kennt Rechner 2 die IP von Rechner 1 und möchte nun eine Verbindung aufbauen. Socket erstellt, Ziel-IP und Port übergeben, und schon schickt Rechner 2 eine Verbindungsanfrage an Rechner 1 - oder besser gesagt an die IP vom 1. Netzwerk (Rechner 1 + Router). Logischerweise treffen die Pakete nun beim Router ein. Dieser schaut nach, an welchen Port diese denn überhaupt gehen sollen und lunkert in seine Konfiguration, ob dafür Weiterleitungsoptionen gegeben sind. Falls nicht, droppt der Router die Pakete einfach und nichts passiert. Sage ich dem Router allerdings: Leite alle Pakete, die zu Port 1234 gesendet werden (ins Netzwerk rein), zum Rechner 1 weiter, dann geschieht folgendes: Rechner 2 sendet wieder seine Pakete an Rechner 1, diese treffen beim Router ein, Router sieht: Aha, an Port 1234, also an Rechner 1 weitersenden, rteffen bei Rechner 1 ein und gut ist. ![]() Fazit: Ob Half-Life, Doom, Apache, FTp-Server oder weiß der Geier was: Wenn ein Socket auf dem eigenen Rechner auf einem Port auf Pakete wartet und ein Router vorgeschaltet ist, MUSS eine Weiterleitung auf diesem eingerichtet werden. Baue ich nur Verbindungen von diesem Rechner auf, ist das natürlich nicht der Fall. Der Router merkt sich in diesem Falle, von welcher IP zu welcher IP und welchem Port ein Rechner aus dem Netz eine Verbindung aufgebaut hat und leitet dementsprechend die Pakete auch automatisch weiter. Ich hoffe, dass ich das einigermaßen verständlich geschrieben habe. MfG Nox |
||
Darren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wiedermal ein äußerst gelungener text von dir hast du mehr von den dingern?? ![]() |
||
MFG Darren |
Nox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Öhhh, in meinem Kopf sicherlich. ![]() ![]() |
||
![]() |
Jean |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wow... sowas hätte ich jetzt echt nicht erwartet... jetzt verstehe ich das sogar... solltest mal ein Buch schreiben^^
1000000x THX |
||
Nox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Freut mich, zu hören. ![]() Und: Ja, auf ein Buch hätte ich Lust. Nur leider wüsste ich nicht, worüber das handeln könnte, alsdass ich soviele Seiten füllen könnte. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group