Network: Client Problem
Re: Network: Client Problem
Innerhalb eines WLAN werden den Rechnern meisten per DHCP beim einloggen die gleichen IP Adressen zugewiesen wie vorher.
Soll heissen, dass die IP sich dort nicht ändert. (In deinem Programm per Konfiguration lösbar).
Es reicht aus, nur einen Server (Laptop) zu nehmen, der auf alles lauscht, was der/die Clients (Minirechner) so zu melden haben.
Der Client kann jeweils vor der Messung beim Server nachfragen, was gemessen werden soll (so als Vorschlag).
Somit haben wir nur einen Server, dessen IP Adresse bekannt sein muss.
Soll heissen, dass die IP sich dort nicht ändert. (In deinem Programm per Konfiguration lösbar).
Es reicht aus, nur einen Server (Laptop) zu nehmen, der auf alles lauscht, was der/die Clients (Minirechner) so zu melden haben.
Der Client kann jeweils vor der Messung beim Server nachfragen, was gemessen werden soll (so als Vorschlag).
Somit haben wir nur einen Server, dessen IP Adresse bekannt sein muss.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
-
- Beiträge: 55
- Registriert: 01.03.2015 12:05
- Wohnort: Saarland / Püttlingen
- Kontaktdaten:
Re: Network: Client Problem
Hallo,
wie Bisonte schon schrieb brauchst du nur einen Server, kannste dir so vorstellen:
kleiner rechner sendet Daten an den Server.
Server verarbeitet die Daten und schickt sie an den großen Rechner.
Großer Rechner sendet Daten an den Server, Server schickt die Daten an den kleinen Rechner.
Wie du siehst, haste 2 Rechner(auf jedem ein CLient) und nur ein Server.
Kannste dir auch so vorstellen, du hast mehrere Rechner über WLAN verbunden und nutzt nur einen ROuter.
Brauchst ja auch nicht für jeden Rechner einen Router
mfg
wie Bisonte schon schrieb brauchst du nur einen Server, kannste dir so vorstellen:
kleiner rechner sendet Daten an den Server.
Server verarbeitet die Daten und schickt sie an den großen Rechner.
Großer Rechner sendet Daten an den Server, Server schickt die Daten an den kleinen Rechner.
Wie du siehst, haste 2 Rechner(auf jedem ein CLient) und nur ein Server.
Kannste dir auch so vorstellen, du hast mehrere Rechner über WLAN verbunden und nutzt nur einen ROuter.
Brauchst ja auch nicht für jeden Rechner einen Router

mfg
Re: Network: Client Problem
Nur nochmal zum Verständnis. Server und Client können beide senden und empfangen. Der Unterschied zwischen Server und Client ist, das der Server auf Verbindungsanfragen an einem Port lauscht und diese annehmen kann. Clients tun dies nicht, diese senden die Verbindungsanfrage an den Server und müssen dafür die Serveradresse kennen. In einem lokalen Netzwerk kannst du auch mit Hostnamen arbeiten anstatt IP. Oder du gibts dem Server eine feste IP in den Netzwerkeinstellungen.
Also ob Client oder Server legt nur fest wer zu wem die Verbindung aufbaut. Steht die Verbindung einmal geht sie in beide Richtungen, senden und empfangen.
In deinem Fall würde man einen der Rechner zum Server erklären. Dieser nimmt die Verbindungsanfragen der beiden Clients an und verwaltet die Daten. Damit du weisst welcher Client, welcher Rechner ist, kannst du das einfach mit in dein Protokoll einbauen. Also beim Verbinden sendet der Client das er z.b. der Messrechner ist.
Was mich am Anfang sehr irritiert hatte beim Netzwerk ist, dass die Daten, welche du sendest, in mehrere Packete zerteilt ankommen können oder auch mehrere Packete, die du sendest, als ein kombiniertes Packet ankommen.
Deswegen empfiehlt sich an den Anfang des Packets die Packetlänge zu schreiben. Damit man das ganze beim empfangen wieder auseinanderwurschteln oder zusammenwurschteln kann. Zumindest wenn binär gearbeitet wird, sehr wichtig.
Also ob Client oder Server legt nur fest wer zu wem die Verbindung aufbaut. Steht die Verbindung einmal geht sie in beide Richtungen, senden und empfangen.
In deinem Fall würde man einen der Rechner zum Server erklären. Dieser nimmt die Verbindungsanfragen der beiden Clients an und verwaltet die Daten. Damit du weisst welcher Client, welcher Rechner ist, kannst du das einfach mit in dein Protokoll einbauen. Also beim Verbinden sendet der Client das er z.b. der Messrechner ist.
Was mich am Anfang sehr irritiert hatte beim Netzwerk ist, dass die Daten, welche du sendest, in mehrere Packete zerteilt ankommen können oder auch mehrere Packete, die du sendest, als ein kombiniertes Packet ankommen.
Deswegen empfiehlt sich an den Anfang des Packets die Packetlänge zu schreiben. Damit man das ganze beim empfangen wieder auseinanderwurschteln oder zusammenwurschteln kann. Zumindest wenn binär gearbeitet wird, sehr wichtig.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!

- ProgOldie
- Beiträge: 236
- Registriert: 19.05.2012 17:09
- Computerausstattung: Windows11, Arduinos, Pi3, PureBasic 6.02
Re: Network: Client Problem
Dank erst 'mal an Thorium,Bisonte und Bab_Smurf! Jetzt ist mir Vieles klarer geworden.
Bleibt nur noch das Problem der Serveradresse. Kann ich denn dem Server mit
CreateNetworkServer(#Server, Port [, Modus [, BindedIP$]])
eine IP-Adresse zuordnen, die der Client kennen muss und wenn ja, welche nehme ich da?
Bleibt nur noch das Problem der Serveradresse. Kann ich denn dem Server mit
CreateNetworkServer(#Server, Port [, Modus [, BindedIP$]])
eine IP-Adresse zuordnen, die der Client kennen muss und wenn ja, welche nehme ich da?
Windows10 / PB5.70 / Arduino (-Due) / Raspberry Pi3 /Linux Mint 18
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- 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: Network: Client Problem
Der Rechner, auf dem der Server läuft, hat automatisch eine IP-Adresse. Die siehst du in den Einstellungen bzw. Eigenschaften deines Netzwerkinterfaces im Computer. Den Parameter 'BindedIP$' brauchst du nur, wenn in dem Rechner mehr als eine Netzwerkkarte enthalten ist, also wenn du z.B. einen WLAN- und einen LAN-Adapter hast. Dann musst du die IP-Adresse des entsprechenden Gerätes dort angeben.
- HeX0R
- Beiträge: 3042
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Re: Network: Client Problem
Das "musst" Du nur dann machen, wenn Du verhindern möchtest, dass auf beiden Geräten gehorcht wird.NicTheQuick hat geschrieben:Den Parameter 'BindedIP$' brauchst du nur, wenn in dem Rechner mehr als eine Netzwerkkarte enthalten ist, also wenn du z.B. einen WLAN- und einen LAN-Adapter hast. Dann musst du die IP-Adresse des entsprechenden Gerätes dort angeben.
I.d.R. will man ja auf allen Netzwerkadaptern horchen, nur in Ausnahmen möchte man das nicht.
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
- ProgOldie
- Beiträge: 236
- Registriert: 19.05.2012 17:09
- Computerausstattung: Windows11, Arduinos, Pi3, PureBasic 6.02
Re: Network: Client Problem
Ich bin dank der Hilfen und Erklärungen der Wirkungsweise der Lösung schon wieder ein Stück näher gekommen, habe aber immer noch ein Problem mit der Testkonfiguration.
Laptop1: Windows 8.1 [Server und Client ("localhost") installiert]
Laptop2: Vista [Client("localhost") installiert]
Bei beiden Rechnern ist das LAN-Kabel abgezogen. Beide können über das gleiche WLAN des Routers aufs Internet zugreifen.
Auf Laptop1 kommuniziert der Client mit dem Server.
Auf Laptop2 findet der Client aber keinen Kontakt zum Server.
Zwar kann Laptop2 nur b/g, Laptop1 aber b/g/n (Router auf b/g/n eingestellt). Daran kann es aber nicht liegen, was ich bei einer Änderung der Routereinstellung auf b/g überprüft habe.
Woran kann es liegen, wenn Laptop2 keinen Kontakt zum Client findet? Muss ich eine andere IP einstellen?
Laptop1: Windows 8.1 [Server und Client ("localhost") installiert]
Laptop2: Vista [Client("localhost") installiert]
Bei beiden Rechnern ist das LAN-Kabel abgezogen. Beide können über das gleiche WLAN des Routers aufs Internet zugreifen.
Auf Laptop1 kommuniziert der Client mit dem Server.
Auf Laptop2 findet der Client aber keinen Kontakt zum Server.
Zwar kann Laptop2 nur b/g, Laptop1 aber b/g/n (Router auf b/g/n eingestellt). Daran kann es aber nicht liegen, was ich bei einer Änderung der Routereinstellung auf b/g überprüft habe.
Woran kann es liegen, wenn Laptop2 keinen Kontakt zum Client findet? Muss ich eine andere IP einstellen?
Windows10 / PB5.70 / Arduino (-Due) / Raspberry Pi3 /Linux Mint 18
Re: Network: Client Problem
Firewall Einstellungen
Must eventuell in der Firewall von Windows wo der Server läuft selber eine Regel hinzufügen.
Am besten nicht das Programm freigeben, sondern eine Port Regel hinzufügen.
Nicht am Router rum fummeln. Wenn beide über W-Lan ins Internet können, dann können die lokalen Rechner sich auch gegenseitig sehen.
Must eventuell in der Firewall von Windows wo der Server läuft selber eine Regel hinzufügen.
Am besten nicht das Programm freigeben, sondern eine Port Regel hinzufügen.
Nicht am Router rum fummeln. Wenn beide über W-Lan ins Internet können, dann können die lokalen Rechner sich auch gegenseitig sehen.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- 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: Network: Client Problem
Wenn du versucht auf localhost zu verbinden, dann versucht der Client sich mit dem Rechner zu verbinden, auf dem er selbst läuft. Du musst beim Laptop 2 also schon mit Laptop 1 verbinden, indem du dessen IP oder Hostname verwendest. Wenn du zu Google verbinden wolltest, schreibst du ja auch nicht "localhost" hin, sondern "google.de".
Re: Network: Client Problem
Laut dieser Beschreibung finde ich, dass der Mini-Rechner der Server sein sollte, da dieser den Dienst anbietet.ProgOldie hat geschrieben:Konkret habe ich im Netz einen winzigen Win8.1 Mini-Rechner, der kleinere Strecken bewegt wird und Messwerte erfasst. Diese Werte sendet er dann an einen Windows8.1 Laptop. Der Laptop wiederum soll dem Kleinstrechner Steuersignale senden, anhand derer dieser weiß, was zu messen ist. Ich habe also per WLAN einen Datenaustausch in beide Richtungen.
Als Einstiegs-Code kannst du den Code aus der Hilfe von PB nehmen: http://www.purearea.net/pb/german/manua ... er.pb.html
Den Laptop stattest du mit dem Client aus, den du mit folgendem Code kompilierst: http://www.purearea.net/pb/german/manua ... nt.pb.html
Anstatt "127.0.0.1" musst du die IP-Adresse des Mini-Rechners schreiben. Alternativ kannst du auch den Computername des Mini-Rechners dort eintragen. Also einfach beim Mini-Rechner "Debug ComputerName()" ausführen und beim Client-Code "127.0.0.1" durch den erhaltenen Computername vom Mini-Rechner ersetzen.
Bezüglich geeigneter Port-Nummern lässt sich ebenfalls in der PB-Hilfe Angaben finden: http://www.purearea.net/pb/german/manua ... erver.html

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