Seite 1 von 1

Ich möchte mehrere OpenNetworkConnection öffnen?

Verfasst: 15.02.2019 10:27
von funkheld
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

Re: Ich möchte mehrere OpenNetworkConnection öffnen?

Verfasst: 15.02.2019 18:00
von mk-soft
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.

Re: Ich möchte mehrere OpenNetworkConnection öffnen?

Verfasst: 15.02.2019 18:07
von ¯\_(ツ)_/¯
mk-soft hat geschrieben:muss du selber darum kümmern das alle Daten komplett angekommen sind.
Macht das nicht das TCP?

Re: Ich möchte mehrere OpenNetworkConnection öffnen?

Verfasst: 15.02.2019 18:16
von STARGÅTE
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

Re: Ich möchte mehrere OpenNetworkConnection öffnen?

Verfasst: 15.02.2019 18:23
von mk-soft
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...

Re: Ich möchte mehrere OpenNetworkConnection öffnen?

Verfasst: 15.02.2019 22:48
von funkheld
Danke für die Hilfe.

Gruss