AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Eigene IP Adresse ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene IP Adresse ermitteln

Ein Thema von Cicaro · begonnen am 18. Dez 2009 · letzter Beitrag vom 25. Feb 2016
Antwort Antwort
Seite 2 von 2     12   
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#1

Re: Eigene IP Adresse ermitteln

  Alt 18. Dez 2009, 16:16
Zitat von sirius:
a) Man nutzt die gleichen Möglichkeiten, wie in einer Formularanwendung. --> Frage ist obsolet
TClientSocket/TServerSocket brauchen Windows Handles, die man in einer Formularanwendung reichlich hat - in einer Konsolenanwendung muss man sich irgendwo ein Handle "selber bauen"

Cheers,
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Eigene IP Adresse ermitteln

  Alt 18. Dez 2009, 16:30
Zitat von mjustin:
Zitat von sirius:
a) Man nutzt die gleichen Möglichkeiten, wie in einer Formularanwendung. --> Frage ist obsolet
TClientSocket/TServerSocket brauchen Windows Handles, die man in einer Formularanwendung reichlich hat - in einer Konsolenanwendung muss man sich irgendwo ein Handle "selber bauen"
Prinzipiell zwar ja , aber
1. Braucht der Code zum ermitteln einer IP mittels TClientsocket noch kein Fenster. Das geht definitv in jeder Konsole
2. Was nützt es, wenn ich ein Programm habe, was nur die IP ausgibt. Wenn TClientsocket auch noch für andere Sachen verwendet wird, ist auch in einer Konsole alles vorhanden
3. Das Handle liefert die Komponente, man selber muss nur die Messages empfangen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#3

Re: Eigene IP Adresse ermitteln

  Alt 18. Dez 2009, 16:44
Zitat von sirius:
a) Man nutzt die gleichen Möglichkeiten, wie in einer Formularanwendung. --> Frage ist obsolet
b) In dieser Unit gibt es dafür keine Funktionen oder Methoden
zu a) Geimeint war eine sehr kleine Anwendung ohne jegliche Delphi-Komponenten
zu b) Komisch, deine Variante 2 ist genau das, was ich gesucht hab, und die Methode stammt aus dieser Unit.

Also so funktioniert es für mich am besten:
Delphi-Quellcode:
var
  strIP: String;
  intIP: Integer;

begin
  with TClientSocket.Create(nil) do // TServerSocket geht auch
    begin
      intIP := Socket.LookupName('').S_addr;
      strIP := IntToStr(Byte(intIP)) + '.' + IntToStr(Byte(intIP shr 8)) + '.' + IntToStr(Byte(intIP shr 16)) + '.' + IntToStr(Byte(intIP shr 24));
      Free();
    end;
  Caption := strIP;
end;
Und ich hab nach der privaten IP Adresse gesucht. Die öffentliche ist die des Modem/Routers und die kann/will ich nicht wirklich für meinen Server benutzen.

Also demnach ist a), b) und c) beantwortet. Danke sirius!
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Eigene IP Adresse ermitteln

  Alt 10. Feb 2016, 16:56
@Cicaro Sehr genial kurz und funktionell ! THX
Uses: ScktComp

Geändert von TERWI (10. Feb 2016 um 16:58 Uhr)
  Mit Zitat antworten Zitat
RSF

Registriert seit: 13. Mär 2008
155 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Eigene IP Adresse ermitteln

  Alt 10. Feb 2016, 19:54
Ich hatte einmal ein ähnliches Tool benötigt.
1. Lösung war eine einfache .bat Datei wo die IP in eine txt gespeichert wird.
ip.bat
Code:
@echo off & setlocal
REM set URL=http://checkip.dyndns.com/
set URL=http://meineip.softwareschuhmann.de
echo externe IP-Adresse wird ber %URL% ermittelt
echo und in die Datei IP.TXT gespeichert.
set G=%temp%\GetHTML.vbs
echo On Error Resume Next:Set Http=CreateObject("WinHttp.WinHttpRequest.5.1"):Http.Open "GET",WScript.Arguments(0),False:Http.Send:Q=Split(Http.ResponseText,":")(1):WScript.Echo Trim(Split(Q,"<")(0))>%G%
set ExtIP=
for /f %%i in ('cscript //nologo %G% "%URL%"') do set "ExtIP=%%i"
del %G%
if not defined ExtIP echo Externe IP konnte nicht ermittelt werden. & goto :eof
set PFAD=%~dp0
set DATEI=IP.txt
if exist %PFAD%%DATEI%  del /Q %PFAD%%DATEI% 
if not exist %PFAD%%DATEI%  echo %ExtIP%  > %PFAD%%DATEI%
echo ext. IP : %ExtIP%
2. Tool war notwendig um die DynDNS bei auf eigene Strato Seiten zu aktualisieren.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, winsock, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, StdCtrls, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdHTTP;

type
  TForm1 = class(TForm)
    btn1: TButton;
    Label1: TLabel;
    IdHTTP1: TIdHTTP;
    Label2: TLabel;
    IdHTTP2: TIdHTTP;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;

    procedure btn1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);


  private
    { Private-Deklarationen }

  public
    { Public-Deklarationen }


  end;

var
  Form1: TForm1;
  IPADRESSE:String;

const
  HOSTNAMEN='xxxx.xxxxxx.de';
  USERNAME ='xxxxxxxxxx';
  PASSWORT ='**********';


implementation

{$R *.dfm}



Function GeExtIP: string;
 var ndx: integer;

 begin
  //result:=uppercase(Form1.IdHTTP1.Get('http://checkip.dyndns.com'));
    result:=uppercase(Form1.IdHTTP1.Get('http://meineip.softwareschuhmann.de'));
    if result='then result:='GET failedelse
    begin
      ndx:=pos(':',result);
      if ndx=0 then result:='host not foundelse
        begin
           delete(result,1,ndx);
           delete(result,pos('<',result),Length(result));
           result:=trim(result);
        end;
      end;

 end;

Function UpdateIP: string; // für Strato
 begin
  Form1.IdHTTP2.Request.BasicAuthentication:=True;
  Form1.IdHTTP2.Request.Username:=USERNAME;
  Form1.IdHTTP2.Request.Password:=PASSWORT;
  result:=Form1.IdHTTP2.Get(Format('http://dyndns.strato.com'
  +'/nic/update?system=dyndns&hostname=%s&myip=%s'
  ,[HOSTNAMEN,IPADRESSE]));

 end;



procedure TForm1.btn1Click(Sender: TObject);
begin
 IPADRESSE:=GeExtIP;
 label1.Caption:= IPADRESSE;
 Label2.Caption:=UpdateIP;

end;

procedure TForm1.FormShow(Sender: TObject);
begin
 Label5.Caption:= HOSTNAMEN;
 btn1click(self);
end;

end.
vielleicht kann das jemand weiterverwenden.
Ronald
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz