Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Zugriff von einem externen Rechner auf MYSQL (https://www.delphipraxis.net/166889-zugriff-von-einem-externen-rechner-auf-mysql.html)

roland9999 4. Mär 2012 13:39

Zugriff von einem externen Rechner auf MYSQL
 
Delphi 2009

Hallo zusammen,

ich betreibe einen Web-Server mit Shops von Kunden.

Ein Kunde möchte nun ein Programm für das Einstellen von Produkten haben.

Problem:
Das Programm muss die IP des Servers haben.

Im lokalen Netz ist das kein Problem aber wie bekomme ich es hin, dass das Programm auf dem Kundenrechner, die IP bekommt?

Folgendes habe ich gefunden:

Delphi-Quellcode:
function GetIPAddress(const HostName: string): string;
var
  R: Integer;
  WSAData: TWSAData;
  HostEnt: PHostEnt;
  Host: string;
  SockAddr: TSockAddrIn;
begin
  Result := '';
  R := WSAStartup($0101, WSAData);
  if R = 0 then
  try
    Host := HostName;
    if Host = '' then
    begin
      SetLength(Host, MAX_PATH);
      GetHostName(@Host[1], MAX_PATH);
    end;
    HostEnt := GetHostByName(@Host[1]);
    if HostEnt <> nil then
    begin
      SockAddr.sin_addr.S_addr := Longint(PLongint(HostEnt^.h_addr_list^)^);
      Result := inet_ntoa(SockAddr.sin_addr);
    end;
  finally
    WSACleanup;
  end;
end;

procedure Tf_hauptform.Button1Click(Sender: TObject);
begin
Label2.Caption := GetIPAddress('google.de');
end;
Leider bleibt Label2 leer.

Kann mir jemand einen Tipp geben wie ich das Problem lösen kann?

Vielen Dank für die Hilfe.

LG
Roland

Valle 4. Mär 2012 15:20

AW: Zugriff von einem externen Rechner auf MYSQL
 
Musst du unbedingt die IP haben? In vielen Fällen kann man einfach direkt den Hostname verwenden.

Liebe Grüße,
Valentin

jobo 4. Mär 2012 16:28

AW: Zugriff von einem externen Rechner auf MYSQL
 
M.E. ist doch ein Webserver genau dadurch ausgezeichnet, dass er statisch im Netz unter fester IP und Namen erreichbar ist. Faktisch kann sich auch eine statische IP natürlich ändern, aber das hab ich noch nicht erlebt.

Also Name oder IP fest eingeben sollte vollkommen ausreichen. Und wenn sich die Adresse in 2 Jahren mal ändert, dann eben nachtragen.

roland9999 5. Mär 2012 06:18

AW: Zugriff von einem externen Rechner auf MYSQL
 
Die IP des Servers ändert sich alle 24 Std. Eine feste IP ist nur lokal in meinem Netzwerk vorhanden.
Da der Kunde sich aber nicht in meinem lokalen Netzwerk befindet, muss das Programm von außen auf die Datenbank zugreifen können.
Über die URL des Shops müsste es doch eigentlich möglich sein die IP herauszufinden.

LG

Roland

mkinzler 5. Mär 2012 06:55

AW: Zugriff von einem externen Rechner auf MYSQL
 
Dann benötigst du einen Dienst wie Dyndns und Co.

divBy0 5. Mär 2012 08:22

AW: Zugriff von einem externen Rechner auf MYSQL
 
Aber wie betreibt der Kunde denn eine Shop mit der Datenbank auf deinem Server wenn der eine dynamische IP hat?

roland9999 5. Mär 2012 08:23

AW: Zugriff von einem externen Rechner auf MYSQL
 
Zitat:

Zitat von mkinzler (Beitrag 1154527)
Dann benötigst du einen Dienst wie Dyndns und Co.

Na klar. Hätte ich aber wirklich selber drauf kommen können. Hostname eingeben, fertig. Manchmal denkt man einfach zu kompliziert. Ich danke allen dir mir helfen wollten.

LG.

Roland:-D

himitsu 5. Mär 2012 08:48

AW: Zugriff von einem externen Rechner auf MYSQL
 
Oder eine statische IP kaufen, wenn man unbedingt eine möchte.

Ach ja, GetHostByName ist und bleibt immer nur ANSI. :warn:
Du nutzt aber ein Unicode-Delphi.

Gibt der Compiler denn keine Warungen aus?

Wobei @Host[1] eh böse ist und man besser PChar(Host) verwenden sollte.

So, also das @ gegen PChar tauschen und vorallen String gegen AnsiString und schon sollte es gehn.

Dazu könnte man dann auch noch die Rückgabewerte von GetHostByName und schön wüßte man, was da schief läuft.


PS: Das kann man sich auch alles (bis auf's PChar) selber im MSDN raussuchen.
MSDN-Library durchsuchenGetHostByName


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