1 Naposledy upravil: dockys (2021-02-08 22:33:45)

Téma: [vyřešeno] Upřesněni funkce http_get

Chtěl bych se zeptat,
potřeboval bych z funkce http_get získat data, které mi vrací daný Http server v odpovědi. Jenomže, problém je ten, že jednou se mi může ze serveru vrátit např. 10 bytů, jednou 200 bytů.

Vím že posledním parametrem funkce je tzv. MaximalReceiveDataLength, je to maximální délka vrácených dat..
Ale pokud například nastavím hodnotu na 200 a server mi zrovna vrátí v odpovědi např. je 10 bytů, tak ta funkce vlastně čeká na ty zbývající data cca 30 sekund a pak se ukončí a vrátí skutečný počet přečtených bytů.
Jde to nějak urychlit ten proces, aby to nečekalo těch cca 30 sekund?
Nebo dělám něco špatně?

2

Re: [vyřešeno] Upřesněni funkce http_get

To čekání je ze strany serveru.

Pokud SDS dostane určený počet dat, okamžitě posílá TCP FIN a tím ihned zavře tcp spojení na server.

Pokud však server pošle méně dat než SDS očekává dle požadavku v nastavení, tak samozřejmě přijme a předá dále vše co přijde, ale spojení samo SDS neuzavře (protože čeká na další data, tak jak to autor programu chce).

Záleží pak jenom na serveru (a nebo na timeoutu v SDS), kdo dojde k uzavření spojení.

Pokud zmíněný http server odešle data a pak čeká 30 sekund na uzavření spojení, tak s tím SDS nic nijak nemůže na své straně udělat, nemá jak.
Tedy mělo by, mohlo by poslat TCP FIN, a právě aby vědělo kdy, tak je tam ta přímá možnost konfigurace autorem FC programu.

Z tohoto hlediska, bude potřeba (nějak) upravit nastavení serveru, který zřejmě čeká na další požadavky na původním otevřeném tcp spojení. Obvykle se dá tato vlastnost nějak vypnout v konfiguraci serveru ("http persistent connection").

-

Nicméně, do nového FW je přidána funkce SDSLIB_http_close() která uzavře spojení na http server, pokud probíhá činnost http_get() nebo http_post(). Vyžaduje to ale nový FW a FULLC EXE.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

3

Re: [vyřešeno] Upřesněni funkce http_get

Funguje vám to nakonec / povedlo se ?

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

4

Re: [vyřešeno] Upřesněni funkce http_get

Ano funguje.. Děkuji za tipy..
Vyřešil jsem to nakonec tak, že jsem upravil program na straně HTTP serveru tak, aby mi vracel odpovědi (příkazy pro SDS) v pevně stanoveném formátu a pevné délce.