Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Alle im Netzwerk befindlichen Clients scannen (https://www.delphipraxis.net/171639-alle-im-netzwerk-befindlichen-clients-scannen.html)

Gintonik 16. Nov 2012 12:08

Alle im Netzwerk befindlichen Clients scannen
 
Hallo,

ich habe ein kleines Problem und das bekomme ich irgendwie nicht gelöst.

Ich habe ein kleines Programm geschrieben, dass via FTP Dateien vom Host an einen Client überträgt.
Das funktioniert auch alles wunderbar.

Ich dachte mir nur, dass es für den Laien einfacher ist, anstatt seine eigene IP eingeben zu müssen, er Quasi den richtigen Client (seines Netzwerk) per Maus anklickt und die IP in mein Programm übernommen wird.

Ich habe auch diverse Netzwerkscanner gefunden. Diese finden allerdings nur Windows-Rechner.
Ich brauche quasi ein Script, was mir alle im LAN befindlichen Geräte (Ipad, Receiver, Xbox usw.) anzeigt, am besten auch mit dem Gerätenamen, um dann die Ergebnisse weiterzuverarbeiten.

Ich erwarte natürlich kein fertiges Script von Euch, aber vielleicht einen Hinweis, womit man sowas umsetzen kann...

Danke.

Sir Rufo 16. Nov 2012 12:13

AW: Alle im Netzwerk befindlichen Clients scannen
 
Und der Client wartet auch fröhlich darauf per FTP Daten zu bekommen?

Ich dachte immer der Client fordert per FTP Daten von einem Server an und bekommt diese dadurch geschickt?

Gintonik 16. Nov 2012 12:19

AW: Alle im Netzwerk befindlichen Clients scannen
 
Um mein kleines Programm kurz zu erkären:

Der Client soll ja von dem Scanner erfasst werden, wenn er an ist.
Wurde er jetzt vom Scanner z.B. mit der IP 192.168.2.201 erkannt, so soll der User auf den Eintrag klicken können und mein Programm übernimmt die IP.
Dann drücke ich auf senden, mein Programm wählt sich via FTP in den Client ein und schiebt die Datei auf diesen.

so gesehen ist der Client jederzeit Empangsbereit. Und der Programmteil läuft ja auch einwandfrei.

Ich suche halt nur nach einer Lösung, dass das ganze Idiotensicher wird und auch der absolute Volllaie die neue Konfiguration seines Receivers aufspielen kann, ohne das ich ihm umständlich erklären muss, wie er an die IP seines Receivers kommt.

Sir Rufo 16. Nov 2012 12:23

AW: Alle im Netzwerk befindlichen Clients scannen
 
Dann interessiert es dich aber nicht, ob das Device läuft, sondern ob das Device Daten per FTP empfangen kann.

Also musst du nur nach den Rechnern suchen, die einen bestimmten Port geöffnet haben.
z.B. mit TIdIcmpClient oder auch TIdTelnet

mjustin 16. Nov 2012 12:25

AW: Alle im Netzwerk befindlichen Clients scannen
 
Zitat:

Zitat von Gintonik (Beitrag 1191500)
Ich brauche quasi ein Script, was mir alle im LAN befindlichen Geräte (Ipad, Receiver, Xbox usw.) anzeigt, am besten auch mit dem Gerätenamen, um dann die Ergebnisse weiterzuverarbeiten.

Das geht indirekt, sofern keine Firewallrestriktionen bestehen, zum Beispiel mittels IP Multicast:

* Clients senden per UDP ihren Namen und IP Adresse ins Netz
* das Programm das den Clients Daten senden will, empfängt diese Nachrichten und weiss damit welche Clients es im Netz ansprechen kann, und kann deren Namen und IP Adressen in einer Liste darstellen

Das Problem besteht aber weiterhin, wie der Client den Transfer anstösst. Denn FTP Übertragungen werden vom Client gestartet.

Der Client muss also eine Verbindung zum Server aufbauen, über die der Server ihm mitteilt, sobald eine Datei für einen FTP Transfer bereit ist.

Daher kann man das IP Multicast auch weglassen und einfach im Server einen weiteren Port (Telnet zum Beispiel) öffnen, auf den sich der Client verbindet. Der Server kann dann über den Socket eine Nachricht an den Client senden, um den Transfer anzustossen.

Zitat:

Dann drücke ich auf senden, mein Programm wählt sich via FTP in den Client ein und schiebt die Datei auf diesen.
Mit FTP kann man Dateien nur auf einen Server schieben. Clients können Dateien nur vom Server herunterladen.

Gintonik 16. Nov 2012 12:26

AW: Alle im Netzwerk befindlichen Clients scannen
 
So kann man es natürlich auch ausdrücken.

Ich brauche quasi alle im Netzwerk befindlichen Geräte aufgelistet, die Port 21 offen haben.

Gintonik 16. Nov 2012 12:28

AW: Alle im Netzwerk befindlichen Clients scannen
 
Ich glaube, ich habe mich umständlich ausgedrückt:

Mein Programm wählt sich in den Server ein(Habe den Server fälschlicherweise als Client bezeichnet!).

mjustin 16. Nov 2012 12:32

AW: Alle im Netzwerk befindlichen Clients scannen
 
Zitat:

Zitat von Gintonik (Beitrag 1191515)
Ich glaube, ich habe mich umständlich ausgedrückt:

Mein Programm wählt sich in den Server ein(Habe den Server fälschlicherweise als Client bezeichnet!).

Dann wäre IP Multicast ein Lösungsweg. War auch kürzlich hier im Forum dargestellt:

http://www.delphipraxis.net/170850-k...-dienst-2.html

http://www.delphipraxis.net/170970-f...d-phone-2.html

Gintonik 16. Nov 2012 16:27

AW: Alle im Netzwerk befindlichen Clients scannen
 
Diese Multicast-Sache verstehe ich nicht so ganz.

Aber vielleicht habe ich mich auch total unglücklich ausgedrückt. Ich versuche den Sachverhalt nochmal neu zu äußern:

Im LAN gibt es einen Linux-FTP, an dem sich ganz normal via FTP eingewählt werden kann.
Es könnten aber auch zwei oder mehrere dieser Server im Netz sein.
Dazu kommen ja noch die Handelsüblichen Geräte (Tablet, Xbox usw...).

Ich möchte gerne ein Programm haben, der dass gesamte LAN abscannt und mir erreichbare IP-Adressen anzeigt.
Alternativ einen Scanner, der mir explizit Port 21-Geräte anzeigt.

Wenn der Scan durchgelaufen ist und ich z.B. 8 Geräte angezeigt bekomme, möchte ich dann per Mausklick die IP des gesuchten Gerätes übernehmen und damit weiterarbeiten.

mjustin 16. Nov 2012 16:53

AW: Alle im Netzwerk befindlichen Clients scannen
 
Zitat:

Zitat von Gintonik (Beitrag 1191558)
Diese Multicast-Sache verstehe ich nicht so ganz.

...

Wenn der Scan durchgelaufen ist und ich z.B. 8 Geräte angezeigt bekomme, möchte ich dann per Mausklick die IP des gesuchten Gerätes übernehmen und damit weiterarbeiten.

Bei Multicast spart man sich das Scannen, das Problem wird einfach umgedreht: anstatt alle erreichbare IP Adressen im Netz durchzunudeln (was in sicherheitsorientierten IT Umgebungen schnell dazu führt, dass ein IDS System einen Alarm auslöst), verbreitet der FTP Server seine Existenz aktiv per UDP.

Der Client, der eine Liste aller FTP Server sehen möchte, lauscht für kurze Zeit (zum Beispiel für die Dauer von drei Sekunden) auf einem UDP Port. Empfängt er während dieser Zeit den UDP Broadcast eines noch unbekannten FTP Servers, trägt er dessen IP Adresse in die Auswahlliste ein.

Nach drei Sekunden stoppt der Client dann den UDP Empfang und präsentiert die Auswahlliste der gefundenen FTP Server.

Anstatt an allen Servern einzeln "anzuklopfen" und zu fragen "kannst Du FTP?", wartet der Client einfach entspannt auf die eintreffenden Nachrichten:

* "Hier, Ich bin ein FTP Server mit der IP 1.2.3.4!"
* "Hallo, hier ist ein FTP Server mit IP 2.3.4.5"
...

Konkret habe ich das Auffinden von Apache ActiveMQ Brokern (Message Queue Server) über IP Multicast hier beschrieben:

Discover ActiveMQ brokers with Delphi and IP Multicast

Auf diesem Weg kann der Client einen Server finden, zu dem er sich anschliessend auf Port 616163 verbinden will.

Gintonik 16. Nov 2012 17:05

AW: Alle im Netzwerk befindlichen Clients scannen
 
Aber was ich denn immer noch nicht verstehe, ist die Tatsache, dass in diesem Fall doch der Server "Hallo" rufen muss, der Client selbiges "hören".
Ich habe aber keinen Einfluss auf den FTP-Server.
Ich denke, dass der Client alle IPs/Ports scannen muss.

Oder bin ich jetzt total schwer von Begriff?

Geht dein Demo überhaupt mit Delphi7 Enterprise?

Bummi 16. Nov 2012 17:23

AW: Alle im Netzwerk befindlichen Clients scannen
 
@mjustin
ich gehe davon aus dass beliebige FTP-Server in Reichweite aufgefunden werden sollen, nicht selbst aufgesetzte welche eine Multicast versenden könnten. So wird nicht übrig bleiben als einen kleinen Portscanner zu schreiben.

DeddyH 16. Nov 2012 17:28

AW: Alle im Netzwerk befindlichen Clients scannen
 
Zitat:

Zitat von mjustin (Beitrag 1191565)
Auf diesem Weg kann der Client einen Server finden, zu dem er sich anschliessend auf Port 616163 verbinden will.

[klugscheiß] Auf dem Port dürfte das aber nicht gelingen, es sei denn, Portnummern sind neuerdings nicht mehr 16 Bit unsigned :mrgreen: [/klugscheiß]

Gintonik 16. Nov 2012 17:30

AW: Alle im Netzwerk befindlichen Clients scannen
 
@Bummi:

Genauso sieht es aus. Ich habe keinen Einfluss auf den Server. Ich weis nur, das Irgendwo im Adresspool sich einer befindet.
Und dessen IP Adresse möchte ich gerne Erfahren. Name & Passwort kenne ich schon, deshalb genügt mir die IP um mich automatisch zu verbinden und die Datei hochzuladen.

mjustin 16. Nov 2012 17:33

AW: Alle im Netzwerk befindlichen Clients scannen
 
Zitat:

Zitat von Gintonik (Beitrag 1191569)
Aber was ich denn immer noch nicht verstehe, ist die Tatsache, dass in diesem Fall doch der Server "Hallo" rufen muss, der Client selbiges "hören".
Ich habe aber keinen Einfluss auf den FTP-Server.
Ich denke, dass der Client alle IPs/Ports scannen muss.

...

Geht dein Demo überhaupt mit Delphi7 Enterprise?

Dann wird man um das Portscannen nicht herum kommen. Ich wollte nur das Vorgehen weiter erläutern, das hinter dem Begriff IP Multicast steht. Wenn es konkret durch technischen Beschränkungen nicht eingesetzt werden kann, so ist es ja eventuell irgendwo anders später hilfreich.

Und ja, Delphi 7 kann auch UDP per Indy empfangen (die aktuellen Indy Komponenten funktionieren noch mit Delphi 5).

Gintonik 16. Nov 2012 17:36

AW: Alle im Netzwerk befindlichen Clients scannen
 
Ich danke Euch schon jetzt für Eure Unterstützung!!!

MuTzE.Y85 16. Nov 2012 17:44

AW: Alle im Netzwerk befindlichen Clients scannen
 
Ich glaube, das ist das was ich suche.

Ich möchte folgendes:

Ich will ein Tool schreiben, dass mir anzeigt, wann ein anderer Rechner im Heimnetzwerk online ist.
Also auf jedem Rechner ist eine Anwendung im Autostart und vermittelt dann seinen "Online-Status".
Auf meinem Rechner erkennt dann das andere/gleiche Programm, wann ein Rechner online ist.


Das müsste doch über diesen Multicast realisierbar sein oder? Im Router kann ich Freigaben erteilen falls notwendig.

Bummi 16. Nov 2012 17:50

AW: Alle im Netzwerk befindlichen Clients scannen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe hier noch einen 12 Jahre alten Code von mir rumliegen, der auch nicht genau macht was Du brauchst, er scannt einen Rechner mit mehreren Threads über von-bis Port, aber das ist ja schnell umgeschrieben.

borstenei 16. Nov 2012 18:22

AW: Alle im Netzwerk befindlichen Clients scannen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Du möchtest auf einen Receiver zugreifen? Ich habe das mal so gelöst..
Erst die eigende IP ermitteln dann alle IP's in dem Bereich anpingen...wenn vorhanden RechnerName ermitteln und MACAdresse...alles in eine TreeView.
Die Routine ermittelt mir alle Geräte in meinem Netzwerk vom iPhone,Receiver(VU+),Fernseher...usw.
Jetzt kann die IP auf Wunsch direkt an den FTP Client übergeben werden und los gehts...

MuTzE.Y85 16. Nov 2012 18:47

AW: Alle im Netzwerk befindlichen Clients scannen
 
@Bummi

Wenn ich das richtig verstehe, nehme ich einen ServerSocket für anderen Rechner und öffne den.
Und mit dem ClientSocket versuche ich im Intervall eine Verbindung aufzubauen und wenn das gelingt, ist der Server online? ^^


@borstenei
Also übertragen möchte ich nix. Es geht wirklich nur darum zu wissen, wann ein PC im Netzwerk ist.
Zur Erklärung. Ich hab hier nur eine 1000er Leitung und wenn jemand anderes im Internet ist, wenn ich zocken will, dann bekomm ich arge Probleme mit dem Ping ;)
Daher würde ich gerne vorher wissen, ob jemand online ist, dann brauch ich das Spiel gar nicht erst zu starten.

Da könnte deine Methode sogar reichen, dann kann ich auch Handys und Co ermitteln.

mjustin 16. Nov 2012 19:04

AW: Alle im Netzwerk befindlichen Clients scannen
 
Zitat:

Zitat von MuTzE.Y85 (Beitrag 1191585)
Ich will ein Tool schreiben, dass mir anzeigt, wann ein anderer Rechner im Heimnetzwerk online ist.
Also auf jedem Rechner ist eine Anwendung im Autostart und vermittelt dann seinen "Online-Status".
Auf meinem Rechner erkennt dann das andere/gleiche Programm, wann ein Rechner online ist.


Das müsste doch über diesen Multicast realisierbar sein oder? Im Router kann ich Freigaben erteilen falls notwendig.

Wenn die IP Adressen intern statisch sind, dann braucht man nur die jeweils andere(n) IP Adresse(n) zu pingen. Das ist wahrscheinlich schneller implementiert als IP Multicast. Ich würde nur eine Liste der IP Adressen hinterlegen und dann Indy TIdICMP für das Ping verwenden.

IP Multicast wäre allerdnings deutlich wartungsfreundlicher, da es keine solche Konfigurationsdatei braucht.

MuTzE.Y85 16. Nov 2012 20:06

AW: Alle im Netzwerk befindlichen Clients scannen
 
Die Adressen werden über DHCP vergeben.
Ich versuche mal die Methode von borstel. Wobei das mit dem Multicast schon nicht schlecht wäre. Da ich sowas noch nicht gemacht habe, wäre das ganz interessant.

MuTzE.Y85 16. Nov 2012 21:39

AW: Alle im Netzwerk befindlichen Clients scannen
 
Hoppala, es wird doch schwieriger :(

Ich hab ja was ganz wichtiges vergessen. Ich habe 2 Router im Netzwerk.
Eine Fritzbox da sind alle dran, und dann einen D-Link wo ich alleine dran bin.

Der IP-Kreis der Fritzbox ist 192.168.1.x und meiner vom D-Link ist 192.168.0.x

Unabhängig davon, dass ich den IP-Kreis kenne, wie würde ich da ran kommen?

Bummi 16. Nov 2012 21:57

AW: Alle im Netzwerk befindlichen Clients scannen
 
ins blaue geraten Netzwerkmaske und eigene IP für z.B. per WMI abgefragte aktive Netzwerkdevices ...

MuTzE.Y85 16. Nov 2012 22:17

AW: Alle im Netzwerk befindlichen Clients scannen
 
Hostname kann ich auch nicht ermitteln :gruebel:

Ist immer leer. Ich habe es über IdIcmpClient probiert, sowie über die WinSock Funktion. Geht beides nicht.
Mhhh.

Gintonik 17. Nov 2012 07:13

AW: Alle im Netzwerk befindlichen Clients scannen
 
@borstenei:

Dein Tool sieht ja schon mal sehr Professionell aus.
Ich glaube in Teilstücken würde es genau meinen Bedarf abdecken.

Den Adresspool herausbekommen habe ich schon hinbekommen.
Womit bzw. wie pingst du jetzt alle im Netzwerk an? (Indy?)

MuTzE.Y85 17. Nov 2012 09:04

AW: Alle im Netzwerk befindlichen Clients scannen
 
Pingen kannst du damit:

IP's anpingen


Indy würde ich lassen, da brauchste 1. Adminrechte und 2. kackt mir das immer mit dem Fehler #10040 ab.

mjustin 17. Nov 2012 09:35

AW: Alle im Netzwerk befindlichen Clients scannen
 
Zitat:

Zitat von MuTzE.Y85 (Beitrag 1191640)
Pingen kannst du damit:

IP's anpingen


Indy würde ich lassen, da brauchste 1. Adminrechte und 2. kackt mir das immer mit dem Fehler #10040 ab.

Ping unter WIndows braucht immer Admin-Rechte, nur bei Verwendung der icmp.dll trickst Windows und gibt sich die Rechte selbst. Microsoft weist auch darauf hin, dass icmp.dll in späteren Windows Versionen nicht mehr enthalten ist.

Zum 10040 wird ein sehr einfacher Workaround hier beschrieben:

Delphi Indy Ping Error 10040

Delphi-Quellcode:
MyIdIcmpClient.PacketSize := 24;


p.s. eine Lösung mit der man auch in mehreren Threads pingen kann wird hier beschrieben:

http://stackoverflow.com/questions/1...ltithread-ping

MuTzE.Y85 17. Nov 2012 09:37

AW: Alle im Netzwerk befindlichen Clients scannen
 
Zitat:

Zitat von mjustin (Beitrag 1191641)
Zitat:

Zitat von MuTzE.Y85 (Beitrag 1191640)
Pingen kannst du damit:

IP's anpingen


Indy würde ich lassen, da brauchste 1. Adminrechte und 2. kackt mir das immer mit dem Fehler #10040 ab.

Ping unter WIndows braucht immer Admin-Rechte, nur bei Verwendung der icmp.dll trickst Windows und gibt sich die Rechte selbst. Microsoft weist auch darauf hin, dass icmp.dll in späteren Windows Versionen nicht mehr enthalten ist.

Zum 10040 wird ein sehr einfacher Workaround hier beschrieben:

Delphi Indy Ping Error 10040

Delphi-Quellcode:
MyIdIcmpClient.PacketSize := 24;

Funktioniert nicht!!!!! Habe mich die halbe Nacht im Netz belesen, nichts brauchbares gefunden.
Ich pinge sogar mit 16 und es klappt nicht.

mjustin 17. Nov 2012 09:46

AW: Alle im Netzwerk befindlichen Clients scannen
 
Zitat:

Zitat von MuTzE.Y85 (Beitrag 1191642)

Ich pinge sogar mit 16 und es klappt nicht.

Welches Betriebssystem ist es, Windows 8?

MuTzE.Y85 17. Nov 2012 10:30

AW: Alle im Netzwerk befindlichen Clients scannen
 
Windows 7 HP 64

Sir Rufo 17. Nov 2012 10:36

AW: Alle im Netzwerk befindlichen Clients scannen
 
Zitat:

Zitat von MuTzE.Y85 (Beitrag 1191611)
Also übertragen möchte ich nix. Es geht wirklich nur darum zu wissen, wann ein PC im Netzwerk ist.
Zur Erklärung. Ich hab hier nur eine 1000er Leitung und wenn jemand anderes im Internet ist, wenn ich zocken will, dann bekomm ich arge Probleme mit dem Ping ;)
Daher würde ich gerne vorher wissen, ob jemand online ist, dann brauch ich das Spiel gar nicht erst zu starten.

Genau dafür bieten einige Router (z.B. FritzBox) die Möglichkeit der Priorisierung an. Dann kann es dir egal sein, wer wie noch im Internet aktiv ist.

MuTzE.Y85 17. Nov 2012 10:55

AW: Alle im Netzwerk befindlichen Clients scannen
 
Redest du von Traffic-Shaping?
Das ist aktiviert...

Sobald jemand anderes auch nur eine Seite aufruft, geht mein Ping auf bis zu 1800 ms hoch. Da geht gar nix mehr.

borstenei 17. Nov 2012 10:56

AW: Alle im Netzwerk befindlichen Clients scannen
 
Hi pinge mit dieser Funktion:
Delphi-Quellcode:

uses
  Windows, SysUtils, Variants, Classes, Graphics, Controls,
  ExtCtrls, ComCtrls, winsock, StdCtrls, wininet;


function Ping(IP:string; TimeOut:Cardinal):Boolean;
   var hICMP : DWORD;
       pierWork : PICMP_ECHO_REPLY;
       dwSize : DWORD;
       Class1,Class2,Class3,Class4 : String;
       i,j : Byte;
 begin
   Result:=False;
   j:=1;
   for i:=1 to Length(IP) do begin
     if IP[i]<>'.' then begin
       case j of
         1: Class1:=Class1+IP[i];
         2: Class2:=Class2+IP[i];
         3: Class3:=Class3+IP[i];
         4: Class4:=Class4+IP[i];
       end;
     end else
       Inc(j);
   end;
   hICMP := IcmpCreateFile;
   if hICMP = INVALID_HANDLE_VALUE then exit;
   try
    dwSize := SizeOf(ICMP_ECHO_REPLY)+8;
     pierWork := AllocMem(dwSize);
     try
       if IcmpSendEcho(hICMP,MAKELONG(MAKEWORD(StrToInt(Class1), StrToInt(Class2)),MAKEWORD(StrToInt(Class3), StrToInt(Class4))),nil,0,nil,pierWork,dwSize,TimeOut) = 0 then
         Result:=False
       else
         Result:=True;
     finally
      FreeMem(pierWork,dwSize);
    end;
  finally
    IcmpCloseHandle(hIcmp);
  end;
end;
ist hier aus dem Forum.

Sir Rufo 17. Nov 2012 11:05

AW: Alle im Netzwerk befindlichen Clients scannen
 
Zitat:

Zitat von MuTzE.Y85 (Beitrag 1191653)
Redest du von Traffic-Shaping?
Das ist aktiviert...

Sobald jemand anderes auch nur eine Seite aufruft, geht mein Ping auf bis zu 1800 ms hoch. Da geht gar nix mehr.

Und du hast die Verbindung von deinem Rechner zu dem Server bei Echtzeitanwendungen eingetragen?

MuTzE.Y85 17. Nov 2012 12:53

AW: Alle im Netzwerk befindlichen Clients scannen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1191655)
Zitat:

Zitat von MuTzE.Y85 (Beitrag 1191653)
Redest du von Traffic-Shaping?
Das ist aktiviert...

Sobald jemand anderes auch nur eine Seite aufruft, geht mein Ping auf bis zu 1800 ms hoch. Da geht gar nix mehr.

Und du hast die Verbindung von deinem Rechner zu dem Server bei Echtzeitanwendungen eingetragen?

Sowas hab ich glaub ich nicht. Wüsste jedenfalls nicht wo.
In meinem D-Link Router kann ich allen Scheiß einstellen, aber der hat ja nunmal kein Modem, darum ist die Fritzbox davor.

Das gehört zwar hier nicht her, aber ich habe auch cFosSpeed. Würde das funktionieren wenn ich das auch auf dem anderen Rechner installiere?
Weil ja 2 IP-Kreise bei mir vorhanden sind.

Sir Rufo 17. Nov 2012 13:04

AW: Alle im Netzwerk befindlichen Clients scannen
 
Die Fritzbox kann das und die Priorisierung sollte auch der letzte Übergabepunkt im eigenen Netz übernehmen.

MuTzE.Y85 17. Nov 2012 13:16

AW: Alle im Netzwerk befindlichen Clients scannen
 
Ich glaube meine ist zu alt. Hab ne 3170.

Zitat:

Folgende AVM-Geräte unterstützen die Priorisierung:

FRITZ!Box Fon WLAN 7112; FRITZ!Box Fon WLAN 7141; FRITZ!Box Fon WLAN 7170; FRITZ!Box Fon WLAN 7170 SL; FRITZ!Box Fon WLAN 7170 SL (Annex A) Edition A; FRITZ!Box Fon WLAN 7170 (Annex A) Edition A/CH; FRITZ!Box Fon WLAN 7170 (Annex B) Edition A/CH; FRITZ!Box Fon WLAN 7240; FRITZ!Box Fon WLAN 7270; FRITZ!Box Fon WLAN 7270 Edition A/CH; FRITZ!Box WLAN 3270; FRITZ!Fon 7150; FRITZ!Box Fon WLAN 7570 VDSL; FRITZ!Box Fon WLAN 7390

borstenei, wie ermittelst du die rechner namen?
Kann ich die exe vom tool mal haben?

borstenei 17. Nov 2012 14:14

AW: Alle im Netzwerk befindlichen Clients scannen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Macadresse und Computername mit diesen Funktionen
Delphi-Quellcode:
function GetComputerName(IPAddr: String): string;
 var
   SockAddrIn: TSockAddrIn;
   HostEnt: PHostEnt;
   WSAData: TWSAData;
 begin
   WSAStartup($101, WSAData);
   SockAddrIn.sin_addr.s_addr := inet_addr(PAnsiChar(AnsiString(IPAddr))); // <-- IP-Addr nach AnsiString wandeln
   HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
   if HostEnt <> nil then
     Result := string(StrPas(Hostent^.h_name)) // <- Hostname nach String wandeln
   else
     Result := '';
 end;


function GetMacAddr(const IPv4: String): String;
   const
     SrcIP: in_addr = (S_addr: 0);
   var
     DestIP: in_addr;
     MacAddr: array[0..5] of Byte;
     MacAddrLen, RC: DWORD;
     i: Integer;
 begin
   Result := '';
   DestIP.S_addr := inet_addr(PAnsiChar(AnsiString(IPv4)));
   MacAddrLen := Length(MacAddr);
   // msdn.microsoft.com/e...aa366358(VS.85).aspx
   RC := SendARP(DestIP,SrcIP,@MacAddr,MacAddrLen);
   case RC of
     NO_ERROR:
       begin
         if (MacAddrLen = 6) then
           for i := 0 to 5 do begin
             if (i > 0) then
               Result := Result +'-';
             Result := Result +IntToHex(MacAddr[i],2);
           end
         else
           Result := 'Error: MacAddrLen='+IntToStr(MacAddrLen);
       end;
     ERROR_GEN_FAILURE:
       Result := 'ERROR_GEN_FAILURE';
     ERROR_INVALID_PARAMETER:
       Result := 'ERROR_INVALID_PARAMETER';
     ERROR_INVALID_USER_BUFFER:
       Result := 'ERROR_INVALID_USER_BUFFER';
     ERROR_BAD_NET_NAME:
       Result := 'ERROR_BAD_NET_NAME';
     ERROR_BUFFER_OVERFLOW:
       Result := 'ERROR_BUFFER_OVERFLOW';
     else
       Result := 'Error: RC='+IntToStr(RC);
   end;
 end;

ich würde gern den alles hier mal anhängen..nur leider gehört mein code nicht in die Rubrik "Da kann man was lernen".:(
ich hänge die Exe mal an , die Netzwerksache tut es ja auch ohne Receiver.

MuTzE.Y85 17. Nov 2012 15:02

AW: Alle im Netzwerk befindlichen Clients scannen
 
Gibts doch gar nicht :-D

Ich habe die gleiche Funktion verwendet und es hat nie geklappt.

Jetzt habe ich endlich den Fehler:
Code:
function GetComputerName(IPAddr: String): string;
 var
   SockAddrIn: TSockAddrIn;
   HostEnt: PHostEnt;
   WSAData: TWSAData;
 begin
   WSAStartup($101, WSAData);
   SockAddrIn.sin_addr.s_addr := inet_addr(PAnsiChar([B]AnsiString[/B](IPAddr))); // <-- IP-Addr nach AnsiString wandeln
   HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
   if HostEnt <> nil then
     Result := string(StrPas(Hostent^.h_name)) // <- Hostname nach String wandeln
   else
     Result := '';
 end;
Das AnsiString hat mir gefehlt. Ich danke dir!
WIe lange dauert bei dir eigentlich das durchpingen? Ich hab die TimeOut-Zeit auf 50 ms und das dauert schon ne weile.

Dein Tool kann ich nicht öffnen. Mir fehlt XML 4.0


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:36 Uhr.
Seite 1 von 2  1 2      

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