Erreichbarkeit einer IP prüfen

Alle Fragen zur Netzwerkkommunikation
Antworten
DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Erreichbarkeit einer IP prüfen

Beitrag von DL3AD »

Hallo,
ich habe auf einem Raspi3 einen USBIP Server laufen der mir USB Geräte über LAN tunnelt auf einen Debian Rechner - das funktioniert soweit 1A.
Das ganze soll nun noch etwas komfortabler gestaltet werden - denn ich kann mich erst mit den getunnelten USB verbinden wenn der raspi läuft.
Dazu muss ermittelt werden ob der raspi schon läuft.

Wie ermittelt man z.B. mit LNet oder mit etwas anderem ob ein Rechner erreichbar ist?

Gruß Frank

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Erreichbarkeit einer IP prüfen

Beitrag von fliegermichl »

ping?!?

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Erreichbarkeit einer IP prüfen

Beitrag von mschnell »

Wenn der Rechner eine eigene IP hat, geht vermutlich Ping am besten.
Wenn er hinter einem NAT Router sitzt, wird es schwierig.
-Michael

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Erreichbarkeit einer IP prüfen

Beitrag von DL3AD »

... mit ping is mir schon klar - wie verwurste ich das in einem Program mit der Aussage Rechner erreichbar oder nicht ?

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Erreichbarkeit einer IP prüfen

Beitrag von fliegermichl »

Formular mit edit1, button1 und memo1 erstellen und folgenden code beim buttonclick:
In den Abhängigkeiten muß synapse eingebunden werden.

Code: Alles auswählen

 
implementation
uses pingsend;
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
var ps : TPingSend;
begin
 ps := TPingSend.Create;
 ps.TimeOut := 1000;
 if ps.Ping(edit1.text) then
   memo1.lines.add(Format('%s hat innerhalb %d ms geantwortet', [edit1.text, ps.PingTime]))
 else
   memo1.lines.add('TimeOut');
 ps.Free;
end;         
 


Im text von Edit1 die IP Adresse oder den Namen des Rechners eintragen der angepingt werden soll.

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Erreichbarkeit einer IP prüfen

Beitrag von DL3AD »

Hallo fliegermichl,
Danke für den Codeschnipsel.
Der Code compiliert sauber durch - aber es kommt immer Timeout bei meiner zu testenden IP 192.168.2.224 :shock:
In der Konsole ist sie mit ping 192.168.2.224 erreichbar.

Gruß Frank
PS: OS ist Debian buster

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Erreichbarkeit einer IP prüfen

Beitrag von m.fuchs »

Lass mal dein Programm mit Root-Rechten laufen. Pingen geht meines Wissens nach nur so.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Erreichbarkeit einer IP prüfen

Beitrag von DL3AD »

ping in der Konsole geht bei mir auch als user.

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Erreichbarkeit einer IP prüfen

Beitrag von DL3AD »

... so - habe mal ein Testprog für die Konsole gemacht - nun geht es.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Erreichbarkeit einer IP prüfen

Beitrag von af0815 »

Bei ping unter Linux kann es sein, das man dir capabilities richtig setzen muss, damit es ohne root geht. Das betrifft auch andere Socket operationen.
Aktuell kämpfe ich da beim Debuggen damit. Auf der Kommandozeile kann ich die richtig setzen, wenn ich aus Lazarus heraus debugge, kann ich die nicht setzen und Ping geht nicht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Erreichbarkeit einer IP prüfen

Beitrag von fliegermichl »

Hmm, kann ich bestätigen. (Ich hatte es unter Windows getestet, da hat es funktioniert)

Starte ich das Programm unter Linux als user, kommt TimeOut.
Mit "sudo ./pingtest" funktioniert es.

Welche capabilities kann man denn da beeinflussen?

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Erreichbarkeit einer IP prüfen

Beitrag von Warf »

Warum benutzt du nicht die ping executable?

Code: Alles auswählen

if RunCommand('ping', ['-c', '1', 'IP'], dummy) = True then
  // Erreichbar
else
  // Nicht erreichbar
 


Wenn das so nicht geht (bin mir nicht sicher ob das result von runcommand den Exit Code wiederspiegelt) gibt’s ne überladene Variante von runcommand mit der der exit Code ausgelesen werden kann

Antworten