Netzwerkanwendung

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
mk-soft
Beiträge: 3871
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Netzwerkanwendung

Beitrag von mk-soft »

OpenNetworkConnection ist nicht wie irgendwo gelesen habe Threadsafed. Daten empfangen und senden ja.

http://www.purebasic.fr/english/viewtop ... 13&t=57150
http://www.purebasic.fr/english/viewtop ... 13&t=31803
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Netzwerkanwendung

Beitrag von edel »

Sicher das dein Port stimmt?
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7035
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Netzwerkanwendung

Beitrag von STARGÅTE »

@mk-soft: Ich habe mir deine Links nicht angesehen, aber sicher das OpenNetworkConnection() nicht tread-Safe ist?
Ich benutze schon seit Jahren eine Prozedur bei der mehrere ServerAdresse per Thread gleichzeitig kontaktiert werden und bekomme auch immer richtige Ergebnisse.

@derschutzhund:
Bei mir funktioniert der Code von NicTheQuick. Ich habe ein Server erstellt und bekomme genau bei dieser IP ein UP.
Edit: Auch bei Port 80, bekomme ich genau von meinem Rooter, Drucker und WLan ein UP.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Netzwerkanwendung

Beitrag von derschutzhund »

Bin jetzt gerade mal zu Linux gewechselt um weiterzutesten.
Hier kommt ein Fehler bei " WaitThread(\thread)" mit der Info ungültiger Speicherzugriff.
Das ist aber erst mal unwichtig!
Wenn es läuft sollte es ja unter Windows laufen und dann evtl. unter Linux.

Vielleicht mache ich auch einen Grundsätzlichen Denkfehler?
Auf allen PCs mit denen ich von einem Hauptrechner aus Verbindung aufnehmen will läuft, wie bereits geschrieben das Script: "SimpleHTTPServerWithUpload.py"
Wer es nicht kennt, es startet einen einfachen httpServer mit dem Port 8000
Ruft man dann über einen Browser diesen PC z.B. mit http://192.168.178.50:8000 auf dann bekommt man eine Übersicht der Dateien die sich im Startverzeichnis von SimpleHTTPServerWithUpload.py befinden und kann sie downloaden. Weiterhin kann man auch einzelne Dateien uploaden. Eigentlich genau was ich haben möchte.

Ist es denn überhaupt möglich mehrere dieser Server mit dem gleichen Port 8000 zu starten ohne, dass sich da was in die Quere kommt oder hab ich da grundsätzlich schon ein Problem und kann damit überhaupt nicht arbeiten???

Übrigens hab ich unter Linux ein miniprogrämmchen gefunden: "check_ip" das innerhalb von ca. 2 Sekunden alle Adressen findet. Das geht aber halt unter Windows nicht.

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 »

derschutzhund hat geschrieben:Ist es denn überhaupt möglich mehrere dieser Server mit dem gleichen Port 8000 zu starten ohne, dass sich da was in die Quere kommt oder hab ich da grundsätzlich schon ein Problem und kann damit überhaupt nicht arbeiten???
Das ist kein Problem.
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Netzwerkanwendung

Beitrag von derschutzhund »

Das ist kein Problem.
Na, das ist ja erst mal gut!

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 »

Unter Linux ist mein Progrämmchen so weit fertig.
Ich rufe für die Ermittlung der IPs zunächst das externe Prog. "check_ip" auf.
Das erzeugt extrem schnell eine kleine Liste mit den belegten IPs.
Nun untersuche ich ob die Verbindung zu einem meiner PCs führt und ob die Datei nr.dat besteht.
In der nr.dat steht die Platznummer des PCs.
Da die IP dynamisch vergeben wird muss ich das machen um zu ermitteln welcher PC gerade welche IP hat.
Wie gesagt unter Linux ist es jetzt erst mal ok.

Jetzt suche ich noch eine schnelle, zuverlässige Lösung um die IPs zu finden unter Windows.

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,

teste gerade noch mal alles was mir so einfällt und da bin ich auf etwas gestoßen.
Wenn ich bei deinem Programm auch nur 10 IPs untersuchen lasse und den Bereich so lege, dass der aktive PC in diesem Bereich liegt dann wird es als up gefunden. Versuche ich es mit 30 Adressen dann wird der PC nie als up gefunden!
Ist ein ähnlicher Effekt wie bei mir wenn ich Timeout auf unter eine Sekunde setzte.
Wenn ich mit meinem primitivprogramm nur z.B. 8 Adressen testen lasse kann ich Timeout teilweise auf 10 finden und der aktive PC wird gefunden.

Code: Alles auswählen

Procedure ipermittelnwin(EventType)
   Define String$, i.i, ip$
   InitNetwork()
   For i = 46 To 51
      ip$ = "192.168.178." + Str(i)
      If OpenNetworkConnection(ip$,8000,#PB_Network_TCP,10)
         String$ = ip$ + " gefunden"
      Else
         String$ = ip$ + " nix"
      EndIf   
      Debug  String$ 
   Next   
EndProcedure
Damit wird bei 192.168.178.50 eine IP gefunden.

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 »

Das ist eben alles eine Sache der Netzwerkauslastung. Normalerweise sind da Timeouts von Minuten üblich, und nicht von Millisekunden. Da musst du halt mit leben. ;)
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Netzwerkanwendung

Beitrag von derschutzhund »

Dann verstehe ich aber nicht wieso das kleine Tool "chkip" unter Linux für 255 Adressen nur 2 Sekunden benötigt???
"chkip" arbeitet mit fping an Stelle von ping.
Gibt es fping evtl. auf für Windows?

LG

Wolfgang
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Antworten