| Autor |
Beitrag |
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Sa 05.05.07 23:08
In meinem Programm nutze ich die Komponenten TServersocket und TClientsocket, um zwischen zwei Rechnern eine Verbindung einzugehen.
Solange ich das nur im LAN Versuche klappt das ganze wunderbar.
Mein Problem ist nur die Verbindung übers Internet. Ich geb im client die IP ein die ich über whatismyip.com kriege, aber das ganze funktioniert nicht wirklich: Soll heißen keine versendete Nachricht kommt an. Derweil gehts übers Internet nur mit der Verwendung von LAN-Tools wie Hamachi o.ä.
Und hier meine fragen dazu, weil ich das ganze gern internet lauffähig habe möchte:
1) Geht das mit den Komponenten überhaupt? Wenn ja, muss ich was besonderes einstellen?
2) Liegts vielleicht an der IP? Ich sitz hier hinter nem Router, brauch ich dessen IP dafür? Welche IP gibt mir eig. die Internetseite?
Ich dneke, man sieht das ich von Netzwerken nicht wirklich viel Ahnung habe, deswegen eröffne ich ja auch den Thread hier.
Bin für jede HIlfe dankbar
Basti
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: So 06.05.07 01:05
Moin!
Jann1k hat folgendes geschrieben: | In meinem Programm nutze ich die Komponenten TServersocket und TClientsocket,
[...]
1) Geht das mit den Komponenten überhaupt? Wenn ja, muss ich was besonderes einstellen? |
Ja, klar geht das mit den Sockets. Du musst in den Kompos auch nix besonderes einstellen, das liegt am Router, wenn denn einer in der Verbindung enthalten ist.  (Fazit: auch mit anderen Komponenten würde es nicht klappen)
Jann1k hat folgendes geschrieben: | | 2) Liegts vielleicht an der IP? Ich sitz hier hinter nem Router, brauch ich dessen IP dafür? |
Wenn ein TCP-Server hinter einem (NAT-)Router ist, dann brauchst du ein Portforwarding im Router, damit Clients aus dem Internet diesen erreichen können.
In diesem Tutorial findest du zu dem Thema auch noch ein paar Hinweise.
Jann1k hat folgendes geschrieben: | | Welche IP gibt mir eig. die Internetseite? |
Damit bekommst du die öffentliche IP-Adresse deines Routers; also genau das, was die Clients zum Verbinden eingeben müssen.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
Zuletzt bearbeitet von Narses am Mo 18.02.08 02:35, insgesamt 1-mal bearbeitet
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: So 06.05.07 09:26
Und damit das trotzdem klapp(en kann), gibt es das STUN-Protokoll (Simple Transferal of UPD over NAT). Und da es dieses Protokoll bisher nur für C++ und Java gibt, habe ich mich vor langer Zeit dran gesetzt, dass nach Delphi zu übersetzen und ich bin vorgestern damit fertig geworden. Das debuggen wird noch einige Zeit in Anspruch nehmen, aber dann könnte es klappen, auch Verbindung zu PCs mit Router aufzunehmen.
Dass es funktionieren kann, zeigt Google Talk. Das Tool Hamachi verwendet ein ähnliches Verfahren (UDP Hole Punching).
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Jann1k 
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: So 06.05.07 11:12
Also, nach Narses muss ich am Programm selbst nichts verändern, sondern nur am Router das Portforwarding durchziehen.
Wie ist das jetzt mit dem STUN-Protokoll brauch ich das zusätzlich, oder ist das eine Alternative?
Und könnt ihr mir vllt beim POrtforwarding helfen:
ich komm in folgenden Bildschirm udn weiß nicht, was ich bei der IP-Verwenden soll und welcher Protokolltyp der richtige ist TCP v UDP v Both.

|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: So 06.05.07 12:00
Jann1k hat folgendes geschrieben: | | Also, nach Narses muss ich am Programm selbst nichts verändern, sondern nur am Router das Portforwarding durchziehen. |
Das wäre eine Möglichkeit.
Jann1k hat folgendes geschrieben: | | Wie ist das jetzt mit dem STUN-Protokoll brauch ich das zusätzlich, oder ist das eine Alternative? |
Das wäre eine Alternative.
Jann1k hat folgendes geschrieben: | | Und könnt ihr mir vllt beim POrtforwarding helfen: |
Bei IP kommt die IP deines Computers rein. 192.168.0.1 ist meist der Router. Um herauszufinden, welche du hast:
Start -> Ausführen -> "CMD" -> OK -> "IPConfig"
Dann wählst du TCP aus.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Fighter#1
      
Beiträge: 787
Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
|
Verfasst: So 06.05.07 12:13
Du solltest am Router deiner MAC-Adresse eine feste Netzwerkadresse zuweisen, sonst musst du bei jeder anmeldung beim Router bei dem PORT 7777 deine aktuelle Netzwerkadresse eintragen
Achja, zum testen brauchst du zwei Computer, die hinter verschiedenen Routern liegen bzw. du kannst von deinem PC aus nicht über die Internet IP mit deinem Klienten auf den Router zugreifen!
_________________ Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
|
|
Jann1k 
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: So 06.05.07 12:14
Dankeschön, funktioniert super, nur ne kleine Zusatzfrage an dich GTA, welche Vorteile besitzt den das STUN Protokoll gegenüber dem Portforwarding?
€: hmmm? habs grad getestet und das hat auch geklappt
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: So 06.05.07 12:35
Größter Vorteil: Die User deines Programmes müssen keine Einstellungen vornehmen. Das werden auch die Wenigsten tun (-> Sicherheitsrisiko, keine Rechte, etc.).
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: So 06.05.07 19:39
Moin!
GTA-Place hat folgendes geschrieben: | | Größter Vorteil: Die User deines Programmes müssen keine Einstellungen vornehmen. |
Ich möchte nochmal klarstellen: TCP-Clients müssen sowieso nix einstellen, das Portforwarding braucht nur der Server und auch nur dann, wenn hinter einem (NAT-)Router.  Genau genommen ist also "der größte Vorteil" lediglich auf der Server-Seite.
GTA-Place hat folgendes geschrieben: | | Das werden auch die Wenigsten tun (-> Sicherheitsrisiko, keine Rechte, etc.). |
Da es idR auch nicht nötig ist, halte ich die Andeutungen in Richtung Sicherheitsrisiko für Panikmache, GTA-Place.  Warum du sowas vom Stapel lässt, obwohl du es besser weißt...
Nochwas zum STUN: das KANN dann mit einem Router klappen, MUSS es aber nicht zwangsweise tun. Bei näherem Interesse bitte die einschlägigen Dokus wälzen.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
Zuletzt bearbeitet von Narses am Mo 18.02.08 02:35, insgesamt 1-mal bearbeitet
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: So 06.05.07 19:44
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: So 06.05.07 23:42
Moin!
GTA-Place hat folgendes geschrieben: | | Nicht jede P2P-Software besitzt einen Server. |
Wir sind hier aber bei einer Spielanwendung und da ist das auf Filesharing optimierte P2P wohl eher der schlechtere Ansatz. Ich würde gerade bei einem Spiel zu C/S raten, da sowieso eine Steuerungsinstanz für die Synchronisation des Ablaufs notwendig ist!
GTA-Place hat folgendes geschrieben: | Narses hat folgendes geschrieben: | GTA-Place hat folgendes geschrieben: | | Das werden auch die Wenigsten tun (-> Sicherheitsrisiko, keine Rechte, etc.). |
Da es idR auch nicht nötig ist, halte ich die Andeutungen in Richtung Sicherheitsrisiko für Panikmache, GTA-Place. Warum du sowas vom Stapel lässt, obwohl du es besser weißt...  |
Siehe oben. |
Ich kam, sah - und fand die Erklärung nicht.
----------
Fighter#1 hat folgendes geschrieben: | | Achja, zum testen brauchst du zwei Computer, die hinter verschiedenen Routern liegen bzw. du kannst von deinem PC aus nicht über die Internet IP mit deinem Klienten auf den Router zugreifen! |
Jann1k hat folgendes geschrieben: | | hmmm? habs grad getestet und das hat auch geklappt |
Zur Erläuterung: es hängt vom Router-OS ab, ob dieser auch Pakete im LAN routet, wenn sie mit der öffentlichen IP adressiert sind; manche tun es, mache nicht, manche optional.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Jann1k 
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Mo 07.05.07 07:10
| Zitat: | | Wir sind hier aber bei einer Spielanwendung und da ist das auf Filesharing optimierte P2P wohl eher der schlechtere Ansatz. Ich würde gerade bei einem Spiel zu C/S raten, da sowieso eine Steuerungsinstanz für die Synchronisation des Ablaufs notwendig ist! |
Versteh davon nicht wirklich viel, aber da es sich um ein rundenbasierendes Strategiespiel handelt, kann man sich die synchronisation sparen
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 07.05.07 09:49
Moin!
Jann1k hat folgendes geschrieben: | | Zitat: | | Wir sind hier aber bei einer Spielanwendung und da ist das auf Filesharing optimierte P2P wohl eher der schlechtere Ansatz. Ich würde gerade bei einem Spiel zu C/S raten, da sowieso eine Steuerungsinstanz für die Synchronisation des Ablaufs notwendig ist! |
Versteh davon nicht wirklich viel, aber da es sich um ein rundenbasierendes Strategiespiel handelt, kann man sich die synchronisation sparen |
Das sehe ich allerdings nicht so  Irgendwie müssen die anderen Spieler ja wohl von den Zügen des Aktuellen erfahren, oder? Also findet eine Synchronisation des Spielzustandes statt.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Mo 07.05.07 14:29
Narses hat folgendes geschrieben: | GTA-Place hat folgendes geschrieben: | | Nicht jede P2P-Software besitzt einen Server. |
Wir sind hier aber bei einer Spielanwendung und da ist das auf Filesharing optimierte P2P wohl eher der schlechtere Ansatz. Ich würde gerade bei einem Spiel zu C/S raten, da sowieso eine Steuerungsinstanz für die Synchronisation des Ablaufs notwendig ist!  |
Ein kleines Spiel, wie in diesem Falle vermutlich sein Towerdefence, welches man lediglich zu zweit spielt, benötigt keinen eigenständigen Server bei einer dritten Persion. Möchte man dieses Spiel nun spielen - finde ich die Einer-Macht-Den-Port-Im-Router-Auf-Nur-Um-Kurz-Zu-Spielen-Lösung etwas unangebracht. Beispiel auch Counter Strike, Warcraft, etc. Diese Spiele kann man alle online spielen, oder auch per IP mit ein paar speziellen Freunden. Damit das klappt, braucht man jemanden (einer der Freunde), der den Port freigibt und dann auf seinem PC den Server startet. Oder aber, das Spiel wurde so programmiert, dass es einen Server nutzt, der 1. nicht auf ein Spiel bzw. Anwendung fixiert ist und 2. genau für sowas vorgesehen ist (nun gut, STUN ist wohl eher für VoIP vorgesehen). Hat man nun diese Verbindung zu Stande gebacht, dann kann immer noch einer der Spieler als Server funkieren - und nun ist es egal, welcher der Spieler. Man kann dann soweit gehen, dass die Software untereinander bestimmt, wer der Server zur Zeit ist. Hat einer eine zu hohe Netzwerkbelastung, so wird einfach mal schnell zum nächsten Spieler geswitcht. Diese Idee und weitere kann man bestimmt noch weit ausbauen. Doch bevor wir soweit sind, muss STUN auf Delphi erstmal laufen.
PS: Wenn ich von P2P rede, meine ich in diesem Fall weniger das Filesharing, sondern mehr die Spieler-zu-Spieler-Verbindung.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 07.05.07 14:54
Moin!
GTA-Place hat folgendes geschrieben: | | Ein kleines Spiel, wie in diesem Falle vermutlich sein Towerdefence, welches man lediglich zu zweit spielt, benötigt keinen eigenständigen Server bei einer dritten Persion. |
Davon habe ich auch gar nicht gesprochen.  Sondern davon, dass eh ein Serverdienst vorhanden sein muss, was du ja auch bereits selbst herausgefunden hast...  Es ist ja nicht verboten, dass einer der Spieler (auch) den Server startet und sich dann lokal verbindet.
GTA-Place hat folgendes geschrieben: | | Möchte man dieses Spiel nun spielen - finde ich die Einer-Macht-Den-Port-Im-Router-Auf-Nur-Um-Kurz-Zu-Spielen-Lösung etwas unangebracht. |
Das darfst du auch gerne tun, ist ja nicht verboten.  Ändert aber nix daran, dass die TCP-C/S-Lösung die bei weitem einfachste ist, alles andere (im Besonderen deine Vorschläge STUN und UHP) stellen aber ungleich viel höhere Anforderungen an den Entwickler.  Fragt sich also, wieviel deine - sicher gut gemeinten Vorschläge - dem Threadersteller überhaupt bringen (sieht man mal von dem Werbungseffekt für deinen STUN-Port ab  )?
GTA-Place hat folgendes geschrieben: | | das Spiel wurde so programmiert, dass es einen Server nutzt, der 1. nicht auf ein Spiel bzw. Anwendung fixiert ist und 2. genau für sowas vorgesehen ist |
Schön, du unterschlägst wenigstens nicht die Abhängigkeit von einem öffentlichen IP-Dienst - die ich bei einer TCP-C/S-"privat"-Lösung übrigens nicht habe.
GTA-Place hat folgendes geschrieben: | | Man kann dann soweit gehen, dass die Software untereinander bestimmt... |
Dann bin ich mal gespannt, wer das so alles "kann"...
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Jann1k 
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Mo 07.05.07 15:49
| Zitat: | | Ein kleines Spiel, wie in diesem Falle vermutlich sein Towerdefence, welches man lediglich zu zweit spielt, |
Ne, nicht die Towerdefence, da müsste die Synchronisation in Echtzeit laufen, das hab ich schonmal versucht beim SpaceShooter und das ging ziemlich in die Hose. Es geht gerade um BastiWars, dass man irgendwann auch mal zu viert spielen können soll.
[url= imageshack.us] [/URL]
|
|
|