AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Netzwerk (Lan ==> Internet)
Thema durchsuchen
Ansicht
Themen-Optionen

Netzwerk (Lan ==> Internet)

Ein Thema von olee · begonnen am 3. Sep 2008 · letzter Beitrag vom 7. Sep 2008
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#1

Netzwerk (Lan ==> Internet)

  Alt 3. Sep 2008, 18:25
Hi,

Ich möchte ein Spiel programmieren doch stehe ich vor einem etwas größeren Problem:

Ich habe es geschafft, eine Verbindung Lokal (LAN) herzustellen.

Doch ich hab einfach keine ahnung, wie ich das mit dem Internet hinbekommen kann.

Also es geht darum, dass ich ja, wenn ich per IP verbinde, der doch automatisch im lokalen
Netzwerk danach such.

Wie kann ich das denn nun auf das Internet ausweiten?

Über eine schnelle Antwort würde ich mich freuen (Will gleich auch noch weiterprogrammieren )


MFG Björn
Björn Zeutzheim
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Netzwerk (Lan ==> Internet)

  Alt 3. Sep 2008, 18:26
Geht nur über direkte IP Eingabe oder Du hast einen Masterserver laufen, auf dem sich alle anderen Server anmelden und der Client empfängt dann die Serverliste vom Masterserver.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Netzwerk (Lan ==> Internet)

  Alt 3. Sep 2008, 18:28
Du hast sicher eine TCP-Verbindung, oder wie machst du das?

Bedenke als erstes mögliche Router auf der Seite des Servers und das darin enthaltene NAT.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Netzwerk (Lan ==> Internet)

  Alt 3. Sep 2008, 18:33
Nein das ist nicht das Problem.

So wie du das gesagt hast, will ich das auch machen.

Nur ist meine Frage:

Wenn ich nun eine Server-Socket komponente habe.

Der gebe ich einen Port und lasse das auf irgendeinem Rechner irgendwo im Internet laufen.

Nun sitze ich an meinem PC, der nur über einen Router an das Internet angeschlossen ist.

Ich nehme einen Client-Socket und gebe dem einen Port und die IP des Server-Sockets.

Wird der dann nicht im Lokalen Netzwerk (also das mit dem Router / LAN) nach dem Server-Socket suchen und deshalb nicht finden?

oder wird der den auch im Internet suchen.

Oder noch mieser: Selbst der Server-Socket hängt am Internet nur über einen Router.

Dann könnten doch mein PC und der mit dem Server die gleiche IP haben, da sie nicht im gleichen Lan-Netzwerk sind!?
Björn Zeutzheim
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Netzwerk (Lan ==> Internet)

  Alt 3. Sep 2008, 18:33
Was ist gemeint mit NAT ??

EDIT: Hat auch vllt. einer mal ein Beispiel?
Eine fertige Anwendung (wenn jmd. so etwas schon gemacht hat) oder auch nur Code-Schnipsel wären klasse.

Zum Hintergrund meiner Frage: Ich programmiere eine Art Jump-And-Run-Rennspiel.
Nun will ich einen Master-Server haben, der die Liste aller Spiel-Server hat
und dann mehrere Spiele-Server, die wer will starten kann
und natürlich die Clients.

Isgesamt ist das also das Standard-System mit Multiplayer Spielen (wie UT, HL, usw.)
Björn Zeutzheim
  Mit Zitat antworten Zitat
Alt 3. Sep 2008, 18:40     Erstellt von olee
Dieser Beitrag wurde von Matze gelöscht. - Grund: Auch bei einem Edit wird nicht gepusht! :warn:
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Netzwerk (Lan ==> Internet)

  Alt 3. Sep 2008, 18:41
NAT=Network Address Translation
Normales/oft vorkommendes Beispiel:

Dein Server und Dein Client hängen in je einem LAN (mit nur einem oder mehreren Rechnern und je einem Router Richtung WAN)

Dadurch hat dein Server und dein client eine typsiche LAN-IP a la 192.168.1.1, vielleicht sogar beide die gleiche, sind ja in unterschiedlichen LAN.

Die jeweiligen Router haben im WAN natürlich auch eine IP (die sollte unterschiedlich sein) Jetzt schickt dein Client ein PAcket an 80.122.12.35 (was mal die Adresse des serverseitigen Routers im WAN ist) und dort an Port 2000. Der Clientseitige Router erkennt anhand der Adresse und der Subnetmaske gleich, dass das Paket ins Internet/WAN raus geht. Der macht also keine Zicken und schickt es problemlos weiter. Gleichzeitig merkt sich der NAT was wo und über welchen Port geschickt wurde (bei TCP) sodass eine Antwort an den richtigen Absender gelenkt werden kann und er ändert auch die AbsenderAdresse entsprechend vom LAN-Absender in einen WAN-Absender (aber egal)

Der serverseitige Router bekommt jetzt irgendwann das Paket. Der weiß aber nix damit anzufangen. Was soller auch mit einem Paket an Port 2000 machen. Und deswegen musst du ihm das vorher sagen. Dazu gibts die einträge im NAT. Da kannst du sagen, dass alle Pakete an Port 2000 automatisch nach 192.168.1.1 weitergeleitet werden und dort dann auch an Port 2000 oder einen anderen Port. Und dort hast du dein ServerProgramm laufen.


Soweit klar?



zum Edit: Du kannst alles so lassen, wie im LAN, du musst nur den serverseitigen Router oben genanntes mitteilen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Netzwerk (Lan ==> Internet)

  Alt 3. Sep 2008, 18:51
Also das war schon mal klasse!

Also erst mal und VIELEN DANK


Aber noch etwas kleines: Wie genau mach ich das jetzt vom client aus, das ich dem Router
vom Server mitteile, wohin das Paket gehen soll?

EDIT: Genau dazu wäre wenn nötig ein leckeres Code-Schnipsel super
Björn Zeutzheim
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Netzwerk (Lan ==> Internet)

  Alt 3. Sep 2008, 18:54
Das kannst du vom Client nicht. Und vom Server nur, wenn der Router eine entspr. API anbietet, was aber unwahrscheinlich ist.

Du musst wirklich einfach dem Router direkt Bescheid sagen, indem du ganz normal in dessen Einstellungen herumwerkelst.

Eine andere Möglichkeit hat die ja unser Kalb oben gepostet. Die beruht eben darauf, dass ein ständig verfügbarer Server zuerst angefragt wird. Den brauchst du aber dafür.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Netzwerk (Lan ==> Internet)

  Alt 3. Sep 2008, 18:58
Also diesmal drehe ich den Spieß um:

Der Server darf direkt am Internet hängen.

Nur wie sieht es jetzt mit der Verbindung vom client zum Spiel-Server
(oder wie mans auch nennen könnte Client-Server) aus?

Eine Idee die ich hab wäre, dass der Client erst eine Verbindungsanfrage an den Master-Server sendet und der
diese an den Game-Server weiterleitet ... aber dann?

Hat da nicht mal jemand so etwas gemacht und kann mir ein Beispiel anbieten oder auch nur ein wenig Code?

EDIT: Und bevor es noch jmd. erwähnt: Ich hab schon stunden in der DP gesucht.
Björn Zeutzheim
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Netzwerk (Lan ==> Internet)

  Alt 3. Sep 2008, 19:12
Alle müssen sich beim Master Server anmelden.


Hier vielleicht noch etwas (habe ich selbst nie probiert):
Zitat von Sourcforge: nat-traverse:
TECHNIQUE
nat-traverse establishes connections between hosts behind NAT gateways,
without need for reconfiguration of the involved NAT gateways.

1. Firstly, nat-traverse on host "left" sends garbage UDP packets to
the NAT gateway of "right". These packets are, of course, discarded
by the firewall.

2. Then "right"'s nat-traverse sends garbage UDP packets to the NAT
gateway of "left". These packets are *not* discarded, as "left"'s
NAT gateway thinks these packets are replies to the packets sent in
step 1!

3. "left"'s nat-traverse continues to send garbage packets to "right"'s
NAT gateway. These packets are now not dropped either, as the NAT
gateway thinks the packets are replies to the packets sent in step
2.

4. Finally, both hosts send an acknowledgement packet to signal
readiness. When these packets are received, the connection is
established and nat-traverse can either relay STDIN to the socket or
execute a program.
Edit: Wobei ich hier nicht verstehe: Was ist wenn "left NAT-Gateway" den Port ändert?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz