Netzwerkclient zeigt komisches Verhalten
Verfasst: 07.03.2021 22:21
Hallo liebe Netzwerkspezialisten.
Habe einen einfachen TCP Client programmiert (frei nach den üblichen snippets), der Daten von einem ESP8266 abholen soll.
Ca. alle 10 sec. werden Pakete an einen verbundenen Client geschickt. 18 Blöcke mit ein paar Bytes und dann ist wieder für 10 Sek. Ruhe.
1. Putty holt die Daten auf dem gleichen Rechner zuverlässig und regelmäßig ab. Zwischen den einzelnen Blöcken kann es mal ein paar ms Verzögerungen geben, aber gerade eben an der Wahrnehmungsgrenze. (Also kann es doch eigentlich nicht am ESP oder der Infrastruktur liegen)
2. Durch Abändern der Position und Wert von delay () sowie der Anzahl der auf einmal gelesenen Bytes habe ich zumindest einen Teilerfolg erreicht. Der Datentransfer bleibt nicht nach 0-5 Zeilen endgültig stehen. Bisweilen stockt aber der Datenfluss für 5-30 Sec. oder mehr. Plötzlich wird alles nachgeholt. Wie wenn Windows die Daten nicht hergeben möchte. Aber das kann es doch eigentlich nicht sein.
Habe ich mal wieder was grundlegend falsch gemacht oder bin ich einem Bug auf der Spur?
System: Windows 10, kein Virenscanner, Firewall off
Habe einen einfachen TCP Client programmiert (frei nach den üblichen snippets), der Daten von einem ESP8266 abholen soll.
Ca. alle 10 sec. werden Pakete an einen verbundenen Client geschickt. 18 Blöcke mit ein paar Bytes und dann ist wieder für 10 Sek. Ruhe.
1. Putty holt die Daten auf dem gleichen Rechner zuverlässig und regelmäßig ab. Zwischen den einzelnen Blöcken kann es mal ein paar ms Verzögerungen geben, aber gerade eben an der Wahrnehmungsgrenze. (Also kann es doch eigentlich nicht am ESP oder der Infrastruktur liegen)
2. Durch Abändern der Position und Wert von delay () sowie der Anzahl der auf einmal gelesenen Bytes habe ich zumindest einen Teilerfolg erreicht. Der Datentransfer bleibt nicht nach 0-5 Zeilen endgültig stehen. Bisweilen stockt aber der Datenfluss für 5-30 Sec. oder mehr. Plötzlich wird alles nachgeholt. Wie wenn Windows die Daten nicht hergeben möchte. Aber das kann es doch eigentlich nicht sein.
Habe ich mal wieder was grundlegend falsch gemacht oder bin ich einem Bug auf der Spur?
System: Windows 10, kein Virenscanner, Firewall off
Code: Alles auswählen
Global *bufr = AllocateMemory (10000)
Global ipcon
Procedure.s Getline ()
erg.s = ""
Repeat
evnt = NetworkClientEvent (ipcon)
If #PB_NetworkEvent_Data
rec = ReceiveNetworkData (ipcon, *bufr, 1)
erg + PeekS (*bufr, rec, #PB_Ascii)
Debug erg
Continue
EndIf
Delay (1)
Until FindString (erg, ";X")
ProcedureReturn Mid (erg, 1, FindString (erg, ";X"))
EndProcedure
Debug InitNetwork ()
Repeat
ipcon = OpenNetworkConnection ("192.168.200.188", 80, #PB_Network_TCP)
Until ipcon
Debug "Connection"
If OpenConsole ()
PrintN ("Serverconsole:")
EndIf
Repeat
PrintN (Getline ())
ForEver