Seite 2 von 2

Re: Network: Client Problem

Verfasst: 02.03.2015 07:32
von Bisonte
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.

Re: Network: Client Problem

Verfasst: 02.03.2015 07:53
von Baba_Smurf
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

Re: Network: Client Problem

Verfasst: 02.03.2015 12:42
von Thorium
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.

Re: Network: Client Problem

Verfasst: 02.03.2015 18:34
von ProgOldie
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?

Re: Network: Client Problem

Verfasst: 02.03.2015 19:05
von NicTheQuick
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.

Re: Network: Client Problem

Verfasst: 03.03.2015 16:49
von HeX0R
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.
Das "musst" Du nur dann machen, wenn Du verhindern möchtest, dass auf beiden Geräten gehorcht wird.

I.d.R. will man ja auf allen Netzwerkadaptern horchen, nur in Ausnahmen möchte man das nicht.

Re: Network: Client Problem

Verfasst: 04.03.2015 09:45
von ProgOldie
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?

Re: Network: Client Problem

Verfasst: 04.03.2015 10:29
von mk-soft
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.

Re: Network: Client Problem

Verfasst: 04.03.2015 11:38
von NicTheQuick
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

Verfasst: 04.03.2015 20:56
von Sicro
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.
Laut dieser Beschreibung finde ich, dass der Mini-Rechner der Server sein sollte, da dieser den Dienst anbietet.

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