Hallo, guten Tag.
Ich spiele mit einem Programm und möchte von dort Daten Empfangen und Steuerdaten hinschicken.
Das Empfangen geht alle 100ms mit einem Timer.
Das Abschicken der Daten geht nach Tastendruck.
Ich möchte dafür die Programme unabhängig erstellen und stelle die Fenster so ein, das sie auf den Monitor
nebeneinander stehen als ein Block.
Ich nehme an das das einfacher zu handhaben ist als wenn ich mehrere Threads erstelle ?
Danke.
Gruss
Ich möchte mehrere OpenNetworkConnection öffnen?
Re: Ich möchte mehrere OpenNetworkConnection öffnen?
Vielleicht doch mal sich mit Threads beschäftigen...
Ist in diesem fall zu empfehlen.
Gehe davon aus das Du einen Server schreiben möchtest und mehrere Client...
Man kann folgendes tun...
Ein Thread für den Server.
In diesen wertest du aus vom welchen Client die Anfrage kommt und rufst einen neuen Thread mit der ClientID von Client auf.
Dieser Thread liest die Daten (ReceiveNetwork) und sendest die Daten zurück. Dann diesen Thread beenden.
Somit kann der Server Thread schon wieder auf eine neu Anfrage regieren und wieder einen neuen Thread starten.
Ist aber wichtig das die Compiler Option Threadsafe aktiv ist.
Noch was!
Wenn du mit deinen Daten immer schön unter der MTU Blockgröße bleibst (Im lokalen Netzwerk 1460 Byte), musst du dir keine Gedanken machen ob die Daten vollständige angekommen sind.
Erst wenn die Datenmenge über diese Grenze liegt, muss du selber darum kümmern das alle Daten komplett angekommen sind.
Ist in diesem fall zu empfehlen.
Gehe davon aus das Du einen Server schreiben möchtest und mehrere Client...
Man kann folgendes tun...
Ein Thread für den Server.
In diesen wertest du aus vom welchen Client die Anfrage kommt und rufst einen neuen Thread mit der ClientID von Client auf.
Dieser Thread liest die Daten (ReceiveNetwork) und sendest die Daten zurück. Dann diesen Thread beenden.
Somit kann der Server Thread schon wieder auf eine neu Anfrage regieren und wieder einen neuen Thread starten.
Ist aber wichtig das die Compiler Option Threadsafe aktiv ist.
Noch was!
Wenn du mit deinen Daten immer schön unter der MTU Blockgröße bleibst (Im lokalen Netzwerk 1460 Byte), musst du dir keine Gedanken machen ob die Daten vollständige angekommen sind.
Erst wenn die Datenmenge über diese Grenze liegt, muss du selber darum kümmern das alle Daten komplett angekommen sind.
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
Re: Ich möchte mehrere OpenNetworkConnection öffnen?
Macht das nicht das TCP?mk-soft hat geschrieben:muss du selber darum kümmern das alle Daten komplett angekommen sind.
Re: Ich möchte mehrere OpenNetworkConnection öffnen?
TCP stellt nur sicher, dass alle Daten beim Clienten/Server ankommen.
Du musst aber mit dem PB Befehl ReceiveNetworkData() sicherstellen, dass du alles "aufsammelst", denn nicht jedes Paket was du als ein Paket sendest, ist mit nur einem ReceiveNetworkData() empfangbar.
Oft sind Pakete zusammen, oft außeinandergerissen.
Weitere Infos hier: viewtopic.php?p=307857#p307857
Du musst aber mit dem PB Befehl ReceiveNetworkData() sicherstellen, dass du alles "aufsammelst", denn nicht jedes Paket was du als ein Paket sendest, ist mit nur einem ReceiveNetworkData() empfangbar.
Oft sind Pakete zusammen, oft außeinandergerissen.
Weitere Infos hier: viewtopic.php?p=307857#p307857
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Ich möchte mehrere OpenNetworkConnection öffnen?
Bei langsamer Geschwindigkeit im Netz kann es passieren das du schon mal den ersten Block bekommst und erst nach der kürzer zeit den Rest.
Unter TCP kann man bis 64kB übertragen. Diese werden dann auf mehrere Paket aufgeteilt. Das diese in der richtigen Reihenfolge und geprüft ankommen, kümmert sich das TCP Protokoll. Sollte aber nach dem senden des ersten Paketes die Verbindung abbrechen, bekommst du den Rest nicht mehr.
Somit must du dieses selber in deinen Programm überprüfen...
Unter TCP kann man bis 64kB übertragen. Diese werden dann auf mehrere Paket aufgeteilt. Das diese in der richtigen Reihenfolge und geprüft ankommen, kümmert sich das TCP Protokoll. Sollte aber nach dem senden des ersten Paketes die Verbindung abbrechen, bekommst du den Rest nicht mehr.
Somit must du dieses selber in deinen Programm überprüfen...
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
Re: Ich möchte mehrere OpenNetworkConnection öffnen?
Danke für die Hilfe.
Gruss
Gruss