Netzwerkanwendung

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Netzwerkanwendung

Beitrag von NicTheQuick »

Ja, moment. Willst du nun wissen, ob ein Server auf Port 8000 läuft, oder ob der PC überhaupt auf einen Ping reagiert? Das sind zwei verschiedene Schuhe.
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Netzwerkanwendung

Beitrag von derschutzhund »

Im Endeffekt natürlich ob ich eine bestimmte Datei auf einem PC über den Port 8000 erreichen kann aber um alles zu beschleunigen ist es natürlich sinnvoll zunächst mal zu testen welcher PC überhaupt im Netz unter z.B. 192.168.178.x zu erreichen ist!
Wenn das möglich wäre hätten wir ja schon eine Lösung!!!
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Netzwerkanwendung

Beitrag von NicTheQuick »

Am einfachsten wäre eigentlich ein ping an die Broadcast-Adresse der lokalen Domain. Leider antworten da nicht alle Geräte drauf. Die meisten Linux-Rechner tun es, aber Windows anscheinend nie und mein Smartphone zum Beispiel auch nicht. Im Terminal unter Linux sieht das z.B. so aus:

Code: Alles auswählen

nicolas@tp-w530:~$ ping -bw1c1q 192.168.178.255; arp -a
WARNING: pinging broadcast address
PING 192.168.178.255 (192.168.178.255) 56(84) bytes of data.

--- 192.168.178.255 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms

fritz.box (192.168.178.1) auf xx:xx:xx:xx:xx:xx [ether] auf wlan0
Hier die Parameter von ping aufgeschlüsselt:
  • -b: Bedeutet, dass ein Broadcast-Ping gemacht werden soll.
  • -w1: Wartet genau eine Sekunde nach Absenden des Pings, egal, ob noch eine Antwort kommt oder nicht.
  • -c1: Macht nur einen Ping und nicht unendlich.
  • -q: Zeigt weniger an.
Der Befehl "arp -a" listet anschließend alle Rechner auf, die während dem Broadcast geantwortet haben, da diese nun im Cache sind.

Wie gesagt, weiß ich nicht genau, ob dir das hilft. Alternativ kann man auch noch "nmap" nutzen.

Code: Alles auswählen

nicolas@tp-w530:~$ nmap -sP 192.168.178.*

Starting Nmap 6.40 ( http://nmap.org ) at 2015-05-30 14:03 CEST
Nmap scan report for fritz.box (192.168.178.1)
Host is up (0.0057s latency).
Nmap scan report for android-xxxxxxxxxxxxxxxx.fritz.box (192.168.178.22)
Host is up (0.073s latency).
Nmap scan report for tp-w530.fritz.box (192.168.178.31)
Host is up (0.000058s latency).
Nmap done: 256 IP addresses (3 hosts up) scanned in 3.88 seconds
In dem Fall hat das also fast 4 Sekunden gedauert und zeigt auch alles in meinem Netzwerk an.
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Netzwerkanwendung

Beitrag von derschutzhund »

Teste ich mal aus.
Für nmap suche ich mal eine portable Version.
Den Parameter -b kennt mein Ping nicht.
Mit arp -a als Parameter hat er auch Schwierigkeiten.
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Netzwerkanwendung

Beitrag von NicTheQuick »

Ohne genaue Versionsangabe von ping und arp und ohne Fehlerbeschreibung, kann ich dir jetzt nichts dazu sagen. Ich weiß nur, dass manche ping-Versionen den Parameter -b nicht brauchen. Alles andere verrät dir aber immer die man-Page. Also im Terminal einfach "man arp" oder "man ping" eingeben. Zum Beenden einfach 'q' drücken.
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Netzwerkanwendung

Beitrag von derschutzhund »

moin moin!

Inzwischen hab ich schon wieder einige Stunden im Netz verbracht um eine schnelle Methode / ein Programm zu finden welches als command line gestartet werden kann, mein LAN nach IPs durchsucht und das Ergebnis dann in einer Datei z.B. Ergebnis.txt speichert damit ich es mit PB weiter verarbeiten kann.

Ein gutes Programm ist dafür "Angry IP Scanner"!
Hier kann man die Anzahl der Threads einstellen. Wenn ich die auf 260 setze sind nach einer Sekunde alle IPs getestet und alle aktiven Adressen korrekt gefunden!
Es geht also auch unter Windows.
Das Programm lässt sich auch über Command Line starten. Ruft man es dann aber mit Parametern auf kommt immer nur eine Infoseite und zeigt alle verwendbaren Parameter an.
Evtl. gibt es da einen Fehler im Programm. Übrigens, bei der Pingmethode ist da eingestellt: "Windows ICMP.DLL"
Ich glaube immer noch, dass das Problem in PB die Thread-Funktion ist. Da passt noch was nicht richtig.

LG

Wolfgang
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Netzwerkanwendung

Beitrag von derschutzhund »

Hallo nic,

es läuft jetzt auch unter Windows!

Eine ältere Version von Angry IP Scanner (ipscan221.exe) kann man über comannd Line aufrufen.

So sieht der Aufruf aus:

Code: Alles auswählen

         sname$ = GetCurrentDirectory() + "ipscan221 192.168.178.1 192.168.178.254 -f:txt ports.txt"
         RunProgram(sname$,"","",#PB_Program_Wait)
Für den gesamten Bereich werden ca. 15 Sekunden benötigt.

In der Anzeige kann man sehen wie die verschiedenen Threads der Reihe nach gestartet werden und wie sie unterschiedlich lange brauchen bevor sie wieder beendet werden!

LG

Wolfgang
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Benutzeravatar
Sicro
Beiträge: 968
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Netzwerkanwendung

Beitrag von Sicro »

derschutzhund hat geschrieben:

Code: Alles auswählen

sname$ = GetCurrentDirectory() + "ipscan221 192.168.178.1 192.168.178.254 -f:txt ports.txt"
RunProgram(sname$,"","",#PB_Program_Wait)
PureBasic-Hilfe hat geschrieben:RunProgram(DateiName$ [, Parameter$, Arbeitsverzeichnis$ [, Flags [, SenderProgramm]]])
also eher so:

Code: Alles auswählen

sname$ = GetPathPart(ProgramFilename()) + "ipscan221.exe"
RunProgram(sname$,"192.168.178.1 192.168.178.254 -f:txt ports.txt","",#PB_Program_Wait)
GetCurrentDirectory() ist in manchen Fällen problematisch, daher lieber GetPathPart(ProgramFilename()) verwenden.

derschutzhund hat geschrieben:Gibt es fping evtl. auf für Windows?
http://www.kwakkelflap.com/fping.html
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Netzwerkanwendung

Beitrag von derschutzhund »

Habe heute in meinem kleinen Netz mit 20 PCs einen Test gemacht.
Hat halles super gut funktioniert!
Alles dauert nur wenige Sekunden und alle PCs werden gefunden.
Nun können die Schüler in ein Verzeichnis auf ihren PCs die Dateien ablegen und ich sammle sie dann ein.
Auch kann ich nun Dateien von meinem PC auf die einzelnen SchülerPCs ablegen damit diese damit arbeiten können.

Damit hab ich alles so umsetzen können wie geplant.
Weil man ja aber irgendwie nie zufrieden ist möchte ich jetzt mehr.
- Es wäre ja schön alle PCs deren IP ja bekannt sind mit einem Befehl von meinem PC ausschalten zu können
- Wie könnte es laufen wenn ich mit einem Befehl alle Dateien aller PCs abholen möchte.
Im Augenblick gebe ich ja die Adresse z.B. http://192.168.178.40:8000 im Browser ein und bekomme dann eine Seite von der ich die gewünschten Dateien von Hand downloaden kann. Will ich von 20 PCs alles abholen dann ist das schon etwas Arbeit und dauert. Das ganze System baut ja auf .SimpleHTTPServerWithUpload.py auf.

@Sicro
besten Dank für den Tipp! Werde ich mal einbauen!

Bei dem fping ist es mir bis jetzt nicht gelungen einen Aufruf für einen Bereich von IPs von 192.168.178.1 bis 255 in der Befehlszeile einzugeben so dass auch alle IPs abgesucht werden.

LG

Wolfgang
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Netzwerkanwendung

Beitrag von NicTheQuick »

Ach, darum geht es. :shock:

Wieso nutzt du nicht die vorhandenen Möglichkeiten der Netzwerkfreigabe und für jeden deiner Schüler einen eigenen Benutzer. Dann sind immer alle Daten auf dem Server und werden nur per Netzwerkfreigabe in einen Ordner auf den PCs der Schüler gemountet.
Antworten