Autor Beitrag
Jakane
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Mi 18.04.12 12:03 
Hallo Delphi-Helfer :)

Ich habe ein kleines "Chat-Programm" geschrieben. Solange das Programm auf meinem PC gestartet wird, sei es direkt oder über Netzwerk, läuft das Programm toll.

Jetzt möchte ich aber meiner Freundin das Programm auch schicken. Sie hat aber keine Netzwerkverbindung zu mir.
Gibt es da vlt. eine Möglichkeit das ich die IP-Adresse meines PCs ansteuern kann, damit meine Freundin auf meine Daten, die das Programm braucht, zugreifen kann? :)

Ich danke schonmal für Antworten :D


Moderiert von user profile iconNarses: Topic aus Dateizugriff verschoben am Mi 18.04.2012 um 12:21
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 18.04.12 12:24 
Moin!

Deine Beschreibungen sind etwas wirr :? aber ich vermute mal, dass du einen TCP-Chat geschrieben hast, einen DSL-Router (oder ähnliches NAT-Device) für den Internetzugang verwendest und deine Freundin deshalb nicht in dein LAN kann. :nixweiss:
Sofern diese Vermutungen zutreffen, brauchst du ein Portforwarding, damit das klappt. :les: :think:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Do 19.04.12 08:30 
:D
ich habe keine Ahnung was das alles für Begriffe sind :D

aber ich denke nein, mein Programm macht nichts anderes als Textdaten zu schreiben und zu lesen, auf meinem PC.
Und da würd ich gern wissen, ob das Programm auf mein PC zugreifen kann (wenn ich im Internet angemeldet bin), damit er die Daten lesen kann :)
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 19.04.12 08:50 
Nur zum Verständnis, wie funktioniert Dein Chat?
Dazu braucht man ja mindestens 2 Chatpartner. Nennen wir sie PC A und PC B

Du hast auf PC A z.B. ein Laufwerk freigegeben. Das Programm auf PC B liest und schreibt nun in Textdateien, die auf PC A liegen?

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
zuma
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Do 19.04.12 09:02 
user profile iconJakane hat folgendes geschrieben Zum zitierten Posting springen:
:D
ich habe keine Ahnung was das alles für Begriffe sind :D

Das schreit geradezu danach, das du dich mal hier www.delphi-library.d...entSocket_60744.html ein wenig "schlauer" liest ;)

Ist ein kleines Tutorial von Narses mit Beispiel, ich denke, damit kommste schneller zum Ziel.


Zuma

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Do 19.04.12 10:09 
user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:
Nur zum Verständnis, wie funktioniert Dein Chat?
Dazu braucht man ja mindestens 2 Chatpartner. Nennen wir sie PC A und PC B

Du hast auf PC A z.B. ein Laufwerk freigegeben. Das Programm auf PC B liest und schreibt nun in Textdateien, die auf PC A liegen?


Ja.
Das ist mein aktueller Stand :)
Nur das meine Freundin keine Netzwerkverbindung zu PC A hat.
Und ich will das das Programm diese Verbindung alleine herstellen kann.

Irgendwie müssen die ChatProgramme ICQ, MSN und Co das ja auch machen :D
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 19.04.12 10:21 
Jepp. Du hast Lernschritt 1 für ein Chatprogramm abgeschlossen. So hab ich auch mal angefangen. Lang ist es her.
Jetzt kommen wir zu Lernschritt 2. :D
Schreibe Dein Programm so um, dass Du die Dateifreigabe nicht mehr brauchst. Dazu müssen die beiden Chatprogramme direkt über das Netzwerk kommunizieren.
Dafür kannst Du die Indykomponenten benutzen. Das ist eine Sammlung von Komponenten für die Kommunikation über das Netzwerk. Als Beispiel TidTCPServer und TidTCPClient. Einen Einstieg gibt es hier: www.delphi-treff.de/...dy/tcp-tidtcpclient/

Alternativ der Weg, den Narses in dem Tutorial nutzt, das zuma oben schon verlinkt hast. Das benutzt nicht die Indykomponenten, sondern TServerSocket und TClientSocket. Das grobe Prinzip ist das selbe.

Wenn Du das fertig hast und verstanden hast, wie es funktioniert (im lokalen Netzwerk), dann können wir uns drüber unterhalten, wie das ganze im Zusammenspiel mit Deiner Freundin funktioniert.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)

Für diesen Beitrag haben gedankt: Jakane
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Do 19.04.12 10:24 
user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:

Wenn Du das fertig hast und verstanden hast, wie es funktioniert (im lokalen Netzwerk), dann können wir uns drüber unterhalten, wie das ganze im Zusammenspiel mit Deiner Freundin funktioniert.


Find ich cool, Danke :D
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Fr 20.04.12 10:25 
Ok, solange ich local bleibe funktioniert die Client-Verbindung... das hatte ich aber auch ohne Server-Client ^^

Aber keine Internetseite oder mein Netzwerk selbst oder Prozeduren im Delphi-Forum, konnte mir eine IP geben mit der ich mich verbinden konnte :( habe 3 verschiedene IPs bekommen...

Hab leider einen Router und weiss nicht wie ich an meine richtige IP komme
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 20.04.12 10:43 
Moin!

user profile iconJakane hat folgendes geschrieben Zum zitierten Posting springen:
Aber keine Internetseite oder mein Netzwerk selbst oder Prozeduren im Delphi-Forum, konnte mir eine IP geben mit der ich mich verbinden konnte :( habe 3 verschiedene IPs bekommen...
In deinem LAN verwendest du weiterhin die private IP-Adresse, die fängt meistens mit "192.168.*" an, selten auch "10.*" oder ganz selten "172.16.*". :idea:

user profile iconJakane hat folgendes geschrieben Zum zitierten Posting springen:
Hab leider einen Router und weiss nicht wie ich an meine richtige IP komme
Wenn du mit "richtiger IP" deine öffentliche IP des Routers meinst, dann probier mal z.B. www.whatismyip.com oder wenn du es automatisieren möchtest, hier ist ein FAQ-Beitrag dazu.
Aber, wie oben schon erwähnt, mit Router ist bei TCP ein Port-Forwarding pflicht, sonst klappt das auch wieder nicht! :les: :!:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Mo 23.04.12 10:09 
Ok.

Inzwischen habe ich einen Port auf meinem Router hinbekommen.
Die Frage ist nun nur noch, wie ich das im Programm schreibe.

:les:
Im Tutorial steht das ich den Port von der Server und Client-Komponente für das Programm brauche (wenn ich das richtig gelesen habe).
Den Port einfach am Ende der IP mit :Nummer funktioniert auch nicht.

Wie verbind ich mich da jetzt :?:
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Mo 23.04.12 10:15 
Welche Komponenten verwendest Du denn jetzt? Meistens hat die Entsprechende Komponente eine Eigenschaft, die z.B. "Port" heißt.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 23.04.12 10:31 
Am besten schreibe / screenshotte erst einmal was du wo eingestellt hast, sowohl im Quelltext als auch im Router... dann können wir auch etwas dazu sagen.
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Mo 23.04.12 10:58 
www.delphi-library.d...entSocket_60744.html

Da gibt es eine MY_PORT variable die sowohl der Server als auch Client-Komponente zugewiesen wird und jetzt hab ich auch noch den Port von meinem Router.
Es wird aber nicht erklärt wohin der Router-Port jetzt kommt
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Mo 23.04.12 11:11 
Die Idee ist ja, dass der Router anhand des Ports weiß, an welchen seiner Clients im lokalen Netz er die Daten weiterleiten muss.
Du musst 2 verschiedene Ports unterscheiden. Zum einen den Port, an dem Dein Programm auf Daten lauscht. Und den Port, den Du auf dem Router freigegeben hast.

Clientprogramm -> Router (öffentliche IP) -> Client (private IP).
Also stellst Du in Deinem Router (öffentliche IP 79.203.146.111) ein, dass z.B. der Port 4711 an den Client A (z.B. 192.168.1.1) mit dem Port 1234 weitergeleitet wird.
Wenn sich jetzt von außen ein Clientprogramm mit dem Router verbindet (natürlich muss das Programm sich mit der öffentlichen IP und dem freigegeben Port verbinden, hier 4711), dann weiß der Router anhand des Port, dass diese Daten an den Client A an den Port 1234 weitergeleitet werden sollen. Er setzt das also entsprechend um.
Aus Sicht des Clientprogramms ist es völlig egal, ob da jetzt noch ein Router dazwischen ist, oder nicht.

Wenn beide (Clientprogramm, Serverprogramm) im selben Netz sind, müsste sich das Programm mit der IP-Adresse 192.168.1.1 + Port 1234 verbinden.
Ist aber der Router dazwischen, muss er sich mit der IP 79.203.146.111 + Port 4711 verbinden.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)

Für diesen Beitrag haben gedankt: Jakane
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Mo 23.04.12 11:51 
ich bin verbunden!

juhuu :dance2: