Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Mehrere IP-Adressen auf einem Rechner -für Simulationszwecke (https://www.delphipraxis.net/94849-mehrere-ip-adressen-auf-einem-rechner-fuer-simulationszwecke.html)

_frank_ 9. Jul 2007 17:32

Re: Mehrere IP-Adressen auf einem Rechner -für Simulationszw
 
loopback-adressen (127.*) kann man imho nicht binden, sie werden intern an 127.0.0.1 weitergeleitet. jedoch gabs unter WinXP mal einen "Bug", der nur eine begrenzte Anzahl von loopback-Adressen akzeptierte (glaube 127.0.0.1-127.0.0.6). dafür gibts aber einen Patch von MS:
http://www.microsoft.com/downloads/d...displaylang=de
spätestens nach einspielen des Patches sollten sich alle 127er IPs anpingen lassen (antwort von 127.0.0.1)

für dein problem musst du wohl einen eigenen IP-Bereich aufbauen, wie steve schon geschrieben hat.
über die registry geht das bisschen schneller:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\{ 9D98BF32-BD94-4708-937C-A079C7125F52}\Parameters\Tcpip
IPAddress => IPs mit Zeilenumbruch getrennt
SubnetMask => passende Subnetmasks dazu

HTH Frank

xaromz 9. Jul 2007 17:40

Re: Mehrere IP-Adressen auf einem Rechner -für Simulationszw
 
Hallo,
Zitat:

Zitat von _frank_
loopback-adressen (127.*) kann man imho nicht binden, sie werden intern an 127.0.0.1 weitergeleitet. jedoch gabs unter WinXP mal einen "Bug", der nur eine begrenzte Anzahl von loopback-Adressen akzeptierte (glaube 127.0.0.1-127.0.0.6). dafür gibts aber einen Patch von MS:
http://www.microsoft.com/downloads/d...displaylang=de
spätestens nach einspielen des Patches sollten sich alle 127er IPs anpingen lassen (antwort von 127.0.0.1)

Vista leitet nicht weiter, sondern antwortet auch von der angepingten IP-Adresse.

Gruß
xaromz

Whookie 11. Jul 2007 16:23

Re: Mehrere IP-Adressen auf einem Rechner -für Simulationszw
 
Ja, das mit dem Binden der 127.* geht wirklich nicht. Die Lösung (für mich) ist es den Microsoft Loopbackadapter zu installieren. Damit ist es dann möglich IP-Adressen hinzuzufügen (geht natürlich auch mit der physikalischen Karte ... aber bei mir war dann plötzlich Schluß mit surfen) und diese einzeln oder im Broadcast anzusprechen.

Einziger Wermutstropfen, der Loopbackadapter lässt sich in Tools wie dem Packetyzer nicht auswählen und daher kann man den Traffic dann auch nicht aufzeichnen...

Whookie 16. Jul 2007 23:31

Re: Mehrere IP-Adressen auf einem Rechner -für Simulationszw
 
Für alle die es interessiert (und weil ich eine Eeewigkeit gebraucht habe um das rauszukriegen) gibts hier eine Funktion, die herausfindet, ob der Loopback Adapter bereits installiert ist. Getestet habe ich das ganze allerdings nur auf Windows XP (+SP2), wenn also jemand Lust hat und das auch auf was anderem zum Laufen kriegt, kann er ja hier seine Erfahrungen posten!
Um den Code kompilieren zu können, ist die Unit "SetupApi" aus den Jedis nötig und da musste ich {.DEFINE SETUPAPI_LINKONREQUEST} einstellen um keinen Crash zu verursachen...


Delphi-Quellcode:
Function LoopBackInstalled: Boolean;
Var
  pDevInfo: HDEVINFO;
  DevInfoData: SP_DEVINFO_DATA;
  RegDataType: Cardinal;
  PropSize:   Cardinal;
  pPropBuffer: PByte;
  i: Integer;
  p: PChar;
begin
  Result := FALSE; // Annahme: Nix installiert
  pDevInfo := SetupDiGetClassDevs(NIL, NIL, 0, DIGCF_ALLCLASSES Or DIGCF_PRESENT);
  if DWord(pDevInfo) <> INVALID_HANDLE_VALUE then
  begin
    // suche nach dem loopback adapter
    DevInfoData.cbSize := SizeOf(DevInfoData);
    i := 0;
    while SetupDiEnumDeviceInfo(pDevInfo, i, DevInfoData) And Not Result Do // schlägt fehl wenn was nicht passt oder i>Devices ist
    Begin
      pPropBuffer := NIL;
      PropSize := 0;
      // 1. Aufruf um die Buffergröße herauszufinden
      SetupDiGetDeviceRegistryProperty(pDevInfo, DevInfoData, SPDRP_HARDWAREID, RegDataType, pPropBuffer, PropSize, PropSize);
      If GetLastError = ERROR_INSUFFICIENT_BUFFER Then
      Begin
        GetMem(pPropBuffer, PropSize);
        // 2. Aufruf um die Daten zu holen
        If SetupDiGetDeviceRegistryProperty(pDevInfo, DevInfoData, SPDRP_HARDWAREID, RegDataType, pPropBuffer, PropSize, PropSize) Then
        Begin
          // ok pPropBuffer durchsuchen ...
          p := PChar(pPropBuffer);
          while p^ <> #0 do
          begin
            if CompareText(p, '*msloop')=0 then
            begin
              Result := TRUE;
              Break;
            end;
            p := p + Length(p)+1;
          end;
        End; // Eventuell keine Daten vorhanden ...?
        FreeMem(pPropBuffer);
      end;
      Inc(i);
    End;


    SetupDiDestroyDeviceInfoList(pDevInfo);
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr.
Seite 2 von 2     12   

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