Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Chat mit Indy über Internet (https://www.delphipraxis.net/46943-chat-mit-indy-ueber-internet.html)

Neutral General 3. Jun 2005 13:08


Chat mit Indy über Internet
 
Ich glaube das Problem gab es schon öfter aber es konnte mein Problem nicht lösen.
Ich möchte einen Internet Chat mit den IDTCP Komponenten machen. Abgesehen das ich kaum Ahnung von Indy hab und ich den Chat im Moment nichtmal im LAN zum laufen bringe würde ich gerne wissen welche Möglichkeiten es gibt die IP eines Servers herauszubekommen. Also da wo sich die User einklinken in den Chat.

PS: Indy Tutorial hatte ich schon^^ und bitte auf meine Hauptfrage konzentrieren, das mit dem LAN bekomme ich schon hin :mrgreen:

freak4fun 3. Jun 2005 13:17

Re: Chat mit Indy über Internet
 
Hallo :hi:,
ist vielleicht etwas umständlich, aber wenn ein Client/Server im Internet ist, könnte er seine IP irgendwo zugänglich machen, zB als Textdatei auf einen Webserver.

Das nur mal als Idee, es gibt bestimmt bessere Lösungen.

Mich interessiert das auch, den LANChat hatte ich mehr oder weniger erfolgreich hinbekommen. :mrgreen:

MfG
freak -.-"

Neutral General 3. Jun 2005 13:21

Re: Chat mit Indy über Internet
 
Ja an sowas hatte ich auch gedacht.
Das Problem ist das es eigentlich keinen festen Server geben soll sondern das jeder einen Server aufmachen kann. Und das gibt dann Chaos. Wobei es im Notfall auch nur mit einem Server gehen würde...

XHelp 3. Jun 2005 15:41

Re: Chat mit Indy über Internet
 
Hast du einen webspace? wenn ja, dann kann man das mit hilfe eines php scripts lösen, dass alle chaträume (servers) in eine liste eingetragen werden und dass der user aussuchen kann, zu welchem server er die verbindung aufbauen will...

Neutral General 6. Jun 2005 14:07

Re: Chat mit Indy über Internet
 
Also über LAN klappts jetzt. Nur Internet ist ein Problem : Ich habe einen Router.
Wie soll denn bitte jemand zu mir connecten können wenn jeder PC bei uns dieselbe IP hat ??

Auf Deutsch : Internet funktioniert kein bisschen -.-

XHelp 6. Jun 2005 14:57

Re: Chat mit Indy über Internet
 
Wenn du einen router hast, dann muss du zuerst port-forwarding machen...

Neutral General 6. Jun 2005 16:50

Re: Chat mit Indy über Internet
 
Zitat:

Zitat von XHelp
Wenn du einen router hast, dann muss du zuerst port-forwarding machen...

Port Forwarding ? Also ich habe jetzt Ports freigegeben auf meinem Router. Jetzt kann ich schonmal über die Internet IP mit mir selbst chatten :mrgreen:

[edit]jetzt kann ich mit anderen Chatten aber der Client bekommt die antworten von Server nicht. Umgekehrt schon o.O[/edit]

hardy1234 20. Jun 2005 00:30

Re: Chat mit Indy über Internet
 
Zitat:

Zitat von Neutral General
Zitat:

Zitat von XHelp
Wenn du einen router hast, dann muss du zuerst port-forwarding machen...

Port Forwarding ? Also ich habe jetzt Ports freigegeben auf meinem Router. Jetzt kann ich schonmal über die Internet IP mit mir selbst chatten :mrgreen:

[edit]jetzt kann ich mit anderen Chatten aber der Client bekommt die antworten von Server nicht. Umgekehrt schon o.O[/edit]

Ich würde mal darüber nachdenken nen Internet-Server mit Apache(kostet nix, LAMP empfiehlt sich) aufzusetzen. Dafür besorgt man sich bei www.dyndns.org ne Url zu seiner dynamischen IP(kostet nix). Dann installiert man ein PHP-Script, das etwa so aussehen könnte:

Delphi-Quellcode:
<?php
  $command   = $_GET['command'];
  $servername = $_GET['servername'];
  if ($command == "getdynamicip") {
    $result = getenv("REMOTE_ADDR");
  }
  if ($command == "getdynamichost") {
    $result = getenv("REMOTE_HOST");
  } 
  if ($command == "getserverip") {
    $result = getenv("SERVER_ADDR");
  } 
  if (($command == "getdynserver") and ($servername <> "")) {
    $result = gethostbyname($servername);
  } 
  if (($command == "getownwebname") and ($servername <> "")) {
    $result = gethostbyaddr($servername);
  }
  if (($command == "getownwebip") and ($servername <> "")) {
    $result = gethostbyname($servername);
  }
  if ($command == "getall") {
    $serverip   = getenv("SERVER_ADDR");
    $result     = "serverip = [$serverip]";    
    $serverdynip = gethostbyname($servername);    
    $result    .= ";serverdynip = [$serverdynip]";
    $clientip   = getenv("REMOTE_ADDR");
    $result    .= ";clientip = [$clientip]";
   $clientport = getenv("REMOTE_PORT");
   $result    .= ";clientport = [$clientport]";
    if ($clientip <> "") {
      $clientfqdn = gethostbyaddr($clientip);
      if ($clientfqdn <> "") {
        $result    .= ";clientfqdn = [$clientfqdn]";
      } 
    }   
  } 
     
//  $dynamicsrv1 = gethostbyname("meet-me-now.dyndns.org");
//  $dynamicsrv2 = gethostbyname("meet-me-now.dnsalias.org");
//  $result = "getserverip = [$serveraddr]";
//  $result .= "/getdynamicip = [$remoteaddr]";

  echo $result;
?>
Nun muß man auf dem Sever einen Chat-Server mit Datenbank(geht auch ohne) aufsetzen. Der Client besorgt sich per Scriptaufruf(TIdHTTP) die relevanten Daten( das Script liefert alles Wissenswerte) und connected mit dem Chat-Server. Der Charm an der Geschichte ist, das man keine Probleme mit dem Router bekommt, gleich viel welcher das ist. Am eigenen Router muß für diesen Zweck lediglich der Port des Chat-Server als virtueller Server eingerichtet werden, damit der diesen Zugang von außen nicht sperrt.
Dann mußt Du dir noch ein eigenes Protokoll ausdenken und schon funzt das weltweit, wenn man den passenden Client zur Verfügung stell. Selbstverständlich per Download auf dem eigenen Web-Server.

Gruß Hardy


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