Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Tcp Verbindungs Problem (https://www.delphipraxis.net/168013-tcp-verbindungs-problem.html)

CreativeMD 30. Apr 2012 13:40

Tcp Verbindungs Problem
 
Hi,

ich bin gerade dabei ein kleines Chatprogramm zu programmieren,
aber wenn ich es z.B mit meinem Freund nutzen will funktioniert es nicht.
Auch wenn ich meine Ip eingebe und es mit mir selbst verbinden lasse, funktioniert es nicht.
Nur über localhost oder über Hamachi.

Ich hab mal irgendwann davon gehört, das ich gewisse Sachen im Netzwerk erst einstellen muss, damit
ich mich mit jemanden über die Ip verbinden kann.

Weiß irgendjemand eine Lösung?

Vielen Dank im voraus

Klaus01 30. Apr 2012 13:50

AW: Tcp Verbindungs Problem
 
Hallo,

wie sieht denn das bei Euch aus?

Dein PC - (lokal IP) DSL-Router (WAN IP) - Internet - (WAN IP) DSL-Router (lokal IP)- Kumpel PC?

Wenn Dein Kumpel sich mit dem Chat-Server der auf Deinem Rechner laäuft verbinden will,
dann muss er die WAN Adresse Deines DSL-Routers verwenden.

Du musst den Port auf dem die Kommunikation läuft von der WAN-Seite auf die lokale Seite weiterleiten (Stichwort: Port-Forwarding).

Dann sollte es funktionieren.

Grüße
Klaus

bernhard_LA 30. Apr 2012 14:57

AW: Tcp Verbindungs Problem
 
unter https://sourceforge.net/projects/indy10clieservr/ gibt es demos für imdy 10 und delphi XE

sx2008 30. Apr 2012 14:58

AW: Tcp Verbindungs Problem
 
Zitat:

Zitat von CreativeMD (Beitrag 1164285)
Auch wenn ich meine Ip eingebe und es mit mir selbst verbinden lasse, funktioniert es nicht. Nur über localhost

Wie lautet deine Listen-Adresse? Sollte 0.0.0.0 sein.

CreativeMD 30. Apr 2012 16:18

AW: Tcp Verbindungs Problem
 
Also bei ist beim Beispiel dasselbe Problem
und was meinst du mit Listen-Adressen(Ip-Adresse)

sx2008 30. Apr 2012 16:59

AW: Tcp Verbindungs Problem
 
Zitat:

Zitat von CreativeMD (Beitrag 1164317)
und was meinst du mit Listen-Adressen(Ip-Adresse)

Es TCP-Server benötigt neben einem Port auch eine IP-Adresse auf der er lauschen (engl. "Listen"=Zuhören) soll.
Dabei gibt es normalerweise 3 Möglichkeiten:
127.0.0.1 - der Server lauscht auf dem Loopback-Interface; man kann ihn also nur von innerhalb des Rechners ansprechen
192.168.1.100 - der Server lauscht auf seiner eigenen IP-Adresse. Über localhost lässt sich der Server dann aber nicht erreichen. (die 192.168.1.100 ist nur ein Beispiel; man muss natürlich die richtige IP des eigenen Rechners verwenden)
0.0.0.0 - der Server lauscht auf seiner eigenen IP-Adresse UND auf dem Loopback-Interface

Nur wenn die Listen-Adresse 0.0.0.0 ist kann man den Server von intern und extern gleichermassen erreichen.

DeddyH 30. Apr 2012 17:01

AW: Tcp Verbindungs Problem
 
Voraussetzung ist allerdings, dass der Server überhaupt von außerhalb erreichbar ist. Dazu muss, wenn der Rechner hinter einem DSL-Router sitzt, auf letzterem Port-Forwarding eingerichtet sein, wie Klaus bereits schrieb.

sx2008 30. Apr 2012 17:18

AW: Tcp Verbindungs Problem
 
Zitat:

Zitat von DeddyH (Beitrag 1164321)
Voraussetzung ist allerdings, dass der Server überhaupt von außerhalb erreichbar ist

Definitiv.
Aber man muss auch die Verbindung zum Server testen.
Und zwar von nah dran bis ganz weit weg.
Ich verwende dazu immer Telnet (Erklärung hier).
Angenommen der Port des Server ist 6633 und die eigene IP ist 192.168.1.100:
Code:
C:\> telnet localhost 6633
C:\> telnet 192.168.1.100 6633
Wenn das nicht funktioniert braucht man gar nicht erst weiterzugehen.
Der nächste Schritt ist eine Verbindung innerhalb des LANs.
Dazu braucht man natürlich einen 2. Rechner im lokalen Netz.
Erst dann wenn alles funktioniert hat, dann ist der Router dran.

DeddyH 30. Apr 2012 17:36

AW: Tcp Verbindungs Problem
 
Hamachi nutzt AFAIK VPN. Da es damit nach Aussage des TE funktioniert gehe ich davon aus, dass das Port-Forwarding hier der Übeltäter ist.

Zacherl 30. Apr 2012 18:21

AW: Tcp Verbindungs Problem
 
Zitat:

Zitat von DeddyH (Beitrag 1164326)
Hamachi nutzt AFAIK VPN

Korrekt.

Zitat:

Zitat von DeddyH (Beitrag 1164326)
Da es damit nach Aussage des TE funktioniert gehe ich davon aus, dass das Port-Forwarding hier der Übeltäter ist.

Vermute ich an dieser Stelle auch. Eine einfache Möglichkeit die Erreichbarkeit des eigenen PCs von einer WAN Adresse aus zu testen, gibt es beispielsweise auf dieser Website:
http://canyouseeme.org/

Ansonsten funktioniert es natürlich auch wie schon beschrieben über ein "telnet WANIP". Die öffentliche IP bekommt man beispielsweise von:
http://www.wieistmeineip.de/

Aphton 30. Apr 2012 18:28

AW: Tcp Verbindungs Problem
 
Zitat:

Zitat von sx2008 (Beitrag 1164320)
Zitat:

Zitat von CreativeMD (Beitrag 1164317)
und was meinst du mit Listen-Adressen(Ip-Adresse)

Es TCP-Server benötigt neben einem Port auch eine IP-Adresse auf der er lauschen (engl. "Listen"=Zuhören) soll.
Dabei gibt es normalerweise 3 Möglichkeiten:
127.0.0.1 - der Server lauscht auf dem Loopback-Interface; man kann ihn also nur von innerhalb des Rechners ansprechen
192.168.1.100 - der Server lauscht auf seiner eigenen IP-Adresse. Über localhost lässt sich der Server dann aber nicht erreichen. (die 192.168.1.100 ist nur ein Beispiel; man muss natürlich die richtige IP des eigenen Rechners verwenden)
0.0.0.0 - der Server lauscht auf seiner eigenen IP-Adresse UND auf dem Loopback-Interface

Nur wenn die Listen-Adresse 0.0.0.0 ist kann man den Server von intern und extern gleichermassen erreichen.

Interessant, danke!

CreativeMD 30. Apr 2012 18:59

AW: Tcp Verbindungs Problem
 
Vielen Dank
für die vielen Antworten,
ich habs glaube ich jetzt ein bisschen verstanden,
doch ich hab kein blasen Schimmer wie ich das in Delphi schreibe.
Und es per Hand in den Router einzustellen ist leider
keine Option da nicht jeder dazu in der Lage ist
das zu tun.
Das Programm so schließlich mal jemand benutzten.
Ich hoffe ihr versteht mein Anliegen

Popov 30. Apr 2012 19:26

AW: Tcp Verbindungs Problem
 
Hacke nie die 127.0.0.1 IP ;)

Vergiss das Wort Router. Vereinfacht: ein Router ist Computer mit der Verbindung zu einem anderen Netzwerk. Reduziert man den Computer auf das Nötigste, also Soundkarte weg, Videokarte weg usw., bleibt ein kleiner Kasten übrig. Der Router. Behalte trotzdem im Kopf, das es ein Computer ist. Das eine Netz ist das eigene, inc. deinem Computer und Router, das andere das Internet, inc. deinem Roter und dem Router deines Kumpels, zuletzt der Computer deines Kumpels inc. seinem Router. Also drei Netze.

Wenn du ein Chatprogramm für das eine Netz schreibst, ist es nur ein Netz, nur andere IPs. Hier sind es aber drei Netze.

CreativeMD 30. Apr 2012 19:57

AW: Tcp Verbindungs Problem
 
Zitat:

Hacke nie die 127.0.0.1 IP
Meinst du damit das Beispiel programm.
Ja hatte ich nicht eingehackt.

haentschman 30. Apr 2012 20:04

AW: Tcp Verbindungs Problem
 
Zitat:

Meinst du damit das Beispiel programm.
...nö, er meint das...:lol:
http://www.stophiphop.com/modules/ne...hp?storyid=184

CreativeMD 30. Apr 2012 20:15

AW: Tcp Verbindungs Problem
 
ok
können wir wieder zurück zu Thema finden?

EDIT
Kann mir irgendjemand ein Tutorial geben, wo so etwas erklärt wird

Zacherl 30. Apr 2012 23:41

AW: Tcp Verbindungs Problem
 
Es gibt einige Methoden, um automatisiert Ports beim Router freizuschalten. UPnP werfe ich jetzt einfach mal als Stichwort in den Raum. Das ist allerdings nicht umbedingt trivial und wird auch nicht von allen Routern unterstützt. Von der Fritz!Box her kenne ich die Funktionalität, allerdings muss man auch dort vorher das automatisierte Port Forwarding per UPnP aktivieren. Dies geht wiederrum nur über das Webpanel des Routers.

Popov 1. Mai 2012 00:14

AW: Tcp Verbindungs Problem
 
Auch darf er die Firewall, ob die Zusätzliche oder Windows eigene oder die des Routers vergessen. Wenn der Router einen Port nicht offen hat, kommt auch nichts an.

Man sollte hier drauf hinweisen, dass sogar Computer Erfahrene ihre Probleme haben eine Verbindung zwischen zwei Computern herzustellen, denn es gibt, wie oben erwähnt, einige Hürden. So bin ich nicht selten am VNC verzweifelt, wenn der Kollege auf der anderen Seite seine Probleme hatte. Es mußte sehr viel Konfiguriert werden und es lag nicht immer am VNC. Und das ist ein Profiprogramm. Zuletzt habe ich auf VNC komplett verzichtet.

Das Programm TeamViewer erledigt das Problem mit einem Trick. Es ist der gleiche Trick den übrigens auch die Browser nutzen, denn egal welche Firewall man auch hat, anscheinend durchbrechen die Browser jede Firewall.

Der Trick von TeamViewer und auch von den Browsern ist, dass sie zuerst "raus senden". Damit machen sie den Weg frei. Auch der TeamViewer verbindet sich erst mit einem Server, das ist sein Trick. Deshalb muß für TeamViewer nichts am Router eingestellt werden.

Und das wird dein Problem sein CreativeMD. Selbst wenn du es schaffst ein Chatprogramm so zu schreiben, dass es klappt, dann muß der gegenüber erst seine Firewall und Router Konfigurieren. ICQ & Co. umgehen das alles bekanntlich mit dem Trick.

Medium 1. Mai 2012 02:39

AW: Tcp Verbindungs Problem
 
http://en.wikipedia.org/wiki/Hole_punching, macht auch Skype so. Allerdings zählt das nicht zum guten Ton, und soll wohl auch Sicherheitsrisiken bergen, weswegen die entsprechenden Programme gerne mal in Firmen gebannt werden.

So ein Chat sollte über einen Server im Internet realisiert werden. Also so einen, den man sich im Normalfall mietet, mit statischer IP. Das ist auch der übliche Weg.

CreativeMD 1. Mai 2012 12:02

AW: Tcp Verbindungs Problem
 
Zitat:

Und das wird dein Problem sein CreativeMD. Selbst wenn du es schaffst ein Chatprogramm so zu schreiben, dass es klappt, dann muß der gegenüber erst seine Firewall und Router Konfigurieren. ICQ & Co. umgehen das alles bekanntlich mit dem Trick.
Also die Firewall von Windows 7 sollte nicht mehr das Problem sein.

Kann man nicht vom Programm aus was am Router Konfigurieren?

Ich will nicht, dass das Chatprogramm über irgendein Server läuft.
Bei Skype zum Beispiel kann man nur mit 50Kb/s.
Es muss eine direkte Verbindung entstehne.

Z.B der Minecraft Server schafft es doch auch (Oder bin ich jetzt vollkommen blöd)

sx2008 1. Mai 2012 13:59

AW: Tcp Verbindungs Problem
 
Zitat:

Zitat von CreativeMD (Beitrag 1164390)
Z.B der Minecraft Server schafft es doch auch (Oder bin ich jetzt vollkommen blöd)

Ne, du bist nur ungeduldig und gehst unsystematisch vor.

Du willst also aus dem Internet durch deinen Router auf einen TCP/IP-Server auf deinem Rechner zugreifen?
Dann wäre es doch logisch zuerst mal kleine Brötchen zu backen und ein garantiert funktionsfähiges Programm (Apache Webserver) in Betrieb zu nehmen.
1.) Apache Webserver lokal installieren und testen
2.) in der Routerkonfiguration (NAT) einstellen, dass alles was von drausen auf Port 81 reinkommt auf deinen Rechner Port 80 weitergeleitet wird
3.) ermittle deine externe IP-Adresse (z.B. über http://www.ip-adress.com/IP_adresse/ )
4.) greife auf deinen Webserver über diese IP zu

Das wäre sozusagen deine Gesellenprüfung.
Erst jetzt macht es Sinn das Gelernte auf dein Chatprogramm zu übertragen.

Der nächste Schritt wäre dann die Routerkonfiguration per Software anstatt von Hand vorzunehmen.
Die meisten Router unterstützen UPnP und können so konfigueriert werden.
http://www.codeproject.com/Articles/...wardings-and-N

Es gibt noch eine weitere Methode: NAT Port Mapping Protocol

Beide Varianten sind aber so komplex, dass man wohl Jahre an Programmier- und Netzwerkerfahrung benötigt um sie in eine Anwendung einzubauen.

Zacherl 1. Mai 2012 14:03

AW: Tcp Verbindungs Problem
 
Zitat:

Zitat von CreativeMD (Beitrag 1164390)
Kann man nicht vom Programm aus was am Router Konfigurieren?

Wie schon erwähnt. Per UPnP ist das prinzipiell möglich. Allerdings wird diese Möglichkeit nicht von allen Routern unterstützt und muss bei praktisch allen Modellen erstmal über das Webpanel zugelassen / aktiviert werden. Willst du die Aktivierung auch aus deinem Programm heraus vornehmen, müsstest du dir das Webpanel für alle Routertypen anschauen und selbst, wenn du da alles korrekt implementiert hast, stößt dein Programm ganz schnell an seine Grenze, wenn irgendein User mal ein Kennwort fürs Webpanel eingestellt hat.

Zitat:

Zitat von CreativeMD (Beitrag 1164390)
der Minecraft Server schafft es doch auch (Oder bin ich jetzt vollkommen blöd)

Der Minecraft Server beinhaltet keinerlei Firewall Bypassing bzw. Port Forwarding Methoden. Auch hier musst du auf Serverseite ganz normal alle Ports im Router und in der Firewall freigeben.

Popov 1. Mai 2012 16:46

AW: Tcp Verbindungs Problem
 
Zitat:

Kann man nicht vom Programm aus was am Router Konfigurieren?
Alle Router werden von außen konfiguriert, aber jeder anders, bzw. mit eigener Software. Ich hab das Gefühl du willst mit irgendwelchen Tricks alle Hürden umgehen, also z. B. alle Firewalls abschalten, alle Router manipulieren, nur um irgendwie gerade so mal eine Verbindung herzustellen. Und wenn du das hinkriegst, sagst du - ich bin großer Programmierer, ich habe ein Chat über das Internet zwischen zwei Computern hergestellt. Nur bevor du alle Firewalls abschaltest nur um dein kleines Progrämmchen zum laufen zu kriegen, bedenke, dass du ohne Firewall mit einem nicht optimal gepflegtem System, innerhalb einer Minute aus dem Internet angegriffen und übernommen wirst.

Die Idee mit dem Webserver ist nicht schlecht, wäre eine Möglichkeit. Nur im das Gefühl zu kriegen würde ich dir das Tool "HFS - HTTP File Server" empfehlen. Für Austausch von Daten perfekt, leicht zu bedienen und kaum Einstellungen. Das ist ein kleiner, eine Art Web-Server, aber nur für Daten. Zu bedienen ist es leicht, das einzige Problem wird sein alle Hürden aus dem Internet richtig zu konfigurieren. Wenn du das hin gekriegt hast, wird ein Apache zwar mehr Arbeit bedeuten, aber auch mächtiger sein. Aber zuerst würde ich zum Testen den HFS - HTTP File Server versuchen. Dann wirst du mit einem funktionierendem Programm sehen was am System konfiguriert werden muß und was dein Programm können muß.

Hier noch etwas Lesestoff: http://www.brynosaurus.com/pub/net/p2pnat/

CreativeMD 3. Mai 2012 14:39

AW: Tcp Verbindungs Problem
 
ok

nachdem ihr mir alle gesagt wie es nicht geht
und ich nicht weiß wie ich es sonst machen sollte
würde ich vorschlagen wir reden einmal über ein Beispiel.
TeamSpeak 3 ist mein parade Beispiel.
Wie haben die es den gelöst?

Klaus01 3. Mai 2012 14:41

AW: Tcp Verbindungs Problem
 
Zitat:

Zitat von CreativeMD (Beitrag 1164738)
...
TeamSpeak 3 ist mein parade Beispiel.
Wie haben die es den gelöst?

.. die haben einen Server im Internet zu dem sich die Clients verbinden.
Der Server verbindet dann die zu einer "Gruppe" gehörenden Clients.

Grüße
Klaus

CreativeMD 3. Mai 2012 14:44

AW: Tcp Verbindungs Problem
 
aber sie sind dann direkt verbunden oder?

Klaus01 3. Mai 2012 15:09

AW: Tcp Verbindungs Problem
 
Zitat:

Zitat von CreativeMD (Beitrag 1164741)
aber sie sind dann direkt verbunden oder?

die Teilnehmer sind über den Server verbunden, ich denke nicht, dass TS einen Mechanismus verwendet der den Server bypassed.

Grüße
Klaus

CreativeMD 3. Mai 2012 17:59

AW: Tcp Verbindungs Problem
 
Zitat:

den Server bypassed.
was ist bypassed?

Popov 3. Mai 2012 20:20

AW: Tcp Verbindungs Problem
 
Zitat:

Zitat von CreativeMD (Beitrag 1164738)
Wie haben die es den gelöst?

Auch wenn du wiederholt fragst, wird die Antwort nicht anders. Und hier hast du die Frage nur etwas anders formuliert. Ich hab oben ein Link gepostet in dem einige Techniken beschrieben werden. Auch steht, dass man nur für die Verbindung den Server braucht.

Was TeamSpeak angeht auch der funktioniert über Clients und Server. Was sagt Wiki zu TeamSpeak ?
Zitat:

Server können entweder bei Hostinganbietern (z.B. viele Anbieter für Gameserver) für eine meist monatliche Gebühr gemietet oder mithilfe der Serversoftware auf einem eigenen Server oder dem eigenen Rechner installiert werden.
Wohl keine direkte Verbindung. So wie ich es aber erkennen kann, sind Server für privat kostenlos. Also eigenen Webserver installieren, den Server drauf installieren und ab gehts...

Ich erkläre es noch mal kurz: um aus dem Internet auf ein Programm zuzugreifen, mußt du einige Hürden überwinden, und einige davon mußt du manuell konfigurieren. Unmöglich ist nichts, aber mit Aufwand verbunden. Weniger Aufwand ist die oben beschriebene Methode über Server.

Ich schätze es ist ein durchaus interessantes Projekt, aber keines wo du dich mit paar Fragen durchfragen kannst. Hier musst du wohl tiefer in die Materie einsteigen.

Aber wie sieht es mit dem HFS - HTTP File Server aus? Hast du ihn so konfigurieren können, dass dein Kumpel auf den zugreifen kann? Wenn du das hinkriegst, dann kannst du zumindest den Rechner konfigurieren.

Achso...

Zitat:

was ist bypassed?
Schon mal von Bypass gehört? Bypass = etwas umgehen.

DeddyH 4. Mai 2012 07:46

AW: Tcp Verbindungs Problem
 
Nun mal langsam zum Mitschreiben: Dein Rechner hat eine IP-Adresse aus einem "privaten" Adressbereich, vermutlich eine der Art 192.168.X.X. Solche Adressen werden im Internet nicht weitergeleitet, da sie eben für LANs vorgesehen sind. Damit Du also überhaupt mit dem Internet kommunizieren kannst, brauchst Du einen Router (auch Gateway genannt). Dieser hat 2 IP-Adressen, eine aus Deinem privaten und eine aus dem öffentlichen IP-Adressbereich, Letztere bekommt er von Deinem Internet-Provider. Das bedeutet, dass Dein Rechner im Internet gar nicht bekannt ist, sondern nur der Router, da ja nur er eine öffentliche Adresse hat. Kommt nun also eine Anfrage auf Port X beim Router an, muss er wissen, was er damit machen soll, ansonsten verwirft er sie einfach. Hier kommt nun das angesprochene Port-Forwarding ins Spiel. Schau einmal in Deiner Router-Konfiguration nach einem Menüpunkt "NAT", "Port-Weiterleitung" oder "Port-Forwarding", da musst Du dann eintragen, welche Anfragen ggf. an welchen Rechner in Deinem Netz weitergeleitet werden sollen (in der Art "TCP Port 12345 -> 192.168.10.1"). Das Ganze gilt natürlich nur für eingehende Verbindungen, bei ausgehenden wie z.B. das Browsen übernimmt der Router das sowieso automatisch.

CreativeMD 8. Jun 2012 07:08

AW: Tcp Verbindungs Problem
 
hi

Ich habe es nun hinbekommen.
Ich musste wir ihr gesagt den Port im Router freischalten.

Vielen Dank für eure Hilfe


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:05 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