Autor Beitrag
ardani
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP
Delphi 6, C++ (VS Express)
BeitragVerfasst: Di 09.02.10 16:27 
www.delphi-forum.de/...mitteln_96970,0.html

habe das hier per suche gefunden, allerdings liefert das mir nicht das gewünschte Resultat,
ich bin auf der Suche nach dem Hostnamen und irgendwie habe ich das Gefühl die Funktion liefert mir "lediglich" den DNS eintag...
Ich habe damit Versucht von einem Rechner im Netz den Namen zu erhalten, angenommen der Rechner heißt "xyz" im DNS steht "blubb", dann liefert mir die Funktion "blubb" zurück und nicht "xyz", gibt es da eine möglichkeit, oder habe ich beim testen einen Fehler gemacht ?

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
unit Unit2;

interface

uses Winsock, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, ScktComp;

  function IPv4ToNameThread(const IPv4ddn2: String; j: byte): String;

implementation

var
  WSAData: TWSAData;
  aus: string;
  IPv4ddn : string;

procedure IPv4ToName();
  var
    IPv4: in_addr;
    HostEnt: PHostEnt;
begin
  IPv4.S_addr := inet_addr(PAnsiChar(IPv4ddn));
  HostEnt := gethostbyaddr(@IPv4, SizeOf(IPv4), AF_INET);
  if Assigned(HostEnt) then
    aus := StrPas(Hostent^.h_name)
  else
    aus := '';
end;

function IPv4ToNameThread(const IPv4ddn2: String; j: byte): String;
var threadHandle:THandle;
    test:TThreadFunc;
begin
IPv4ddn := IPv4ddn2;
//    ThreadHandle := BeginThread(nil, 0,@IPv4ToName(buildedIP),nil, 0,id );
    ThreadHandle := createThread(nil0, @IPv4ToName,nil0, j);
    if ThreadHandle <> 0 then CloseHandle(ThreadHandle);
end;

initialization
  WSAStartup($101, WSAData); // der RC ist hoffentlich <> 0

finalization
  WSACleanup;

end.


habe es mir jetzt so zurecht gebaut, nur bekomme ich immer die Meldung:

[Error] Unit2.pas(36): Types of actual and formal var parameters must be identical

und weiß aber nicht wieso... Ich weiß schon was sie heißt, nur weiß ich nicht wo der Fehler liegen soll, egal wo ich nachgesehen habe, habe immer nur das gleiche gefunden...
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 10.02.10 21:47 
Moin!

user profile iconardani hat folgendes geschrieben Zum zitierten Posting springen:
ich bin auf der Suche nach dem Hostnamen und irgendwie habe ich das Gefühl die Funktion liefert mir "lediglich" den DNS eintag...
So ist es, genau das tut diese API-Funktion.

user profile iconardani hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe damit Versucht von einem Rechner im Netz den Namen zu erhalten, angenommen der Rechner heißt "xyz" im DNS steht "blubb", dann liefert mir die Funktion "blubb" zurück und nicht "xyz", gibt es da eine möglichkeit, oder habe ich beim testen einen Fehler gemacht ?
Du machst IMHO einen logischen Fehler, da du von der häufig zutreffenden, aber nicht zwingenden Annahme ausgehst, dass sich ein Host beim DNS mit seinem Hostnamen registriert, oder das dieser Vorgang überhaupt automatisch abläuft. :idea:

Man kann einen Host auch manuell im DNS registrieren, sogar mehrfach (was der Code, den zu verwendest, übrigens nicht berücksichtigt). Der ReverseLookup-Call liefert nämlich ein Array von Hostnamen zurück, die unter dieser IP geführt werden.

Zusammengefasst: Wenn du den Hostnamen eines Rechners sicher ermitteln willst, geht das nur auf diesem Rechner selbst, da der Hostname und der DNS-Eintrag nicht zwingend zusammenhängen.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: So 14.02.10 05:42 
In Windows-Netzen wird man wohl am ehesten den NetBIOS/WINS-Hostnamen wissen wollen.

Erklärt wird das ganze hier sehr schön.

Wissen willst du also das, was nbtstat -a IP so als UNIQUE Typ <00> ausspuckt.

Da gibts auch eine API-Funktion zu; irgendwo in der Library existiert da auch Code zu. Den finde ich aber grade nicht, müsstest gegebenenfalls mal selber graben, falls das das ist was du meinst.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."