UDP über Internet?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Jean

Betreff: UDP über Internet?

BeitragFr, März 18, 2005 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
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! Crying or Very sad Crying or Very sad Crying or Very sad
THX

Bigmichi

BeitragFr, März 18, 2005 21:32
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink

Jean

BeitragFr, März 18, 2005 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, März 18, 2005 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, März 18, 2005 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, März 18, 2005 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
regaa: Und wie würde dann der BB Code dazu aussehen?

regaa

BeitragFr, März 18, 2005 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, März 18, 2005 22:07
Antworten mit Zitat
Benutzer-Profile anzeigen
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]

Stream = CreateUDPStream(1234)

ip = -1062731481

WriteLine Stream, \"Hallo\"
SendUDPMsg Stream, ip, 1234

CloseUDPStream Stream
End


THX

regaa

BeitragFr, März 18, 2005 22:55
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, März 19, 2005 0:42
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Crying or Very sad Crying or Very sad Crying or Very sad

THX
 

Dreamora

BeitragSa, März 19, 2005 1:26
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, März 19, 2005 10:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt es Ports welche standartgemäss an alle PC`s in einem Netzwerk vom Router weitergeleitet werden? THX

regaa

BeitragSa, März 19, 2005 13:12
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, März 19, 2005 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Smile

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

BeitragSa, März 19, 2005 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
wiedermal ein äußerst gelungener text von dir hast du mehr von den dingern?? Shocked
MFG Darren
 

Nox

BeitragSa, März 19, 2005 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Öhhh, in meinem Kopf sicherlich. Wink Schreib sowas bei Bedarf, obwohl ich beim Durchforsten des Blitzforums öfters mal denke, ich sollte für die Themen, die ich persönlich beherrsche, ruhig mal ein HOW-TO schreiben. Mal sehen, wenn ich in den Tagen vielleicht mal Zeit habe und rege Interesse besteht. Smile

Jean

BeitragSa, März 19, 2005 18:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Wow... sowas hätte ich jetzt echt nicht erwartet... jetzt verstehe ich das sogar... solltest mal ein Buch schreiben^^

1000000x THX
 

Nox

BeitragSa, März 19, 2005 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Freut mich, zu hören. Smile

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.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group