BG Development


Страници: (4) [1] 2 3 ... последна »  ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> http въпросче
korsarq
Публикувано на: 02-04-2018, 10:45
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 230
Регистриран на: 30.11.16



Значи имам едно питане за HTTP - при отговор съдържащ данни и без хедър казващ дължината как мога да разбера дължината на тези данни?Значи доколкото разбрах има два варианта:или ще е chunked или връзката ще се затвори след респонса.Ако може някой ги разбира повече тези неща да поясни icon_lol.gif


--------------------
It gladdens me to know that Odin prepares for a feast.
Soon I shall be drinking ale from curved horns.
This hero that comes into Valhalla does not lament his death!
I shall not enter Odin's hall with fear.My death comes without apology!
And I welcome the valkyries to summon me home!
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 02-04-2018, 10:53
Quote Post



Име: Джава
Група: Потребител
Ранг: Редовен член

Мнения: 431
Регистриран на: 21.02.18



като го прочетеш целия


--------------------
Напред! Живота е сраженье!
Напред! И прав всегда ходи!
Напред, макар към поражение!
Ако ще паднеш, прав падни!
---
Axis of faith; Raw, and untamed in spirit
To do and undo...
We chew this world; And Spit it out
PMEmail Poster
Top
korsarq
Публикувано на: 02-04-2018, 11:17
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 230
Регистриран на: 30.11.16



Как да разбера къде е краят че да го прочета целия


--------------------
It gladdens me to know that Odin prepares for a feast.
Soon I shall be drinking ale from curved horns.
This hero that comes into Valhalla does not lament his death!
I shall not enter Odin's hall with fear.My death comes without apology!
And I welcome the valkyries to summon me home!
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 02-04-2018, 11:45
Quote Post



Име: Джава
Група: Потребител
Ранг: Редовен член

Мнения: 431
Регистриран на: 21.02.18



QUOTE (korsarq @ 02-04-2018, 11:17)
Как да разбера къде е краят че да го прочета целия

е четеш докато има, обикновено read функцията връща колко байта е прочела и връща -1 като стигне края

тоест само сумираш прочетените докато не получиш -1


--------------------
Напред! Живота е сраженье!
Напред! И прав всегда ходи!
Напред, макар към поражение!
Ако ще паднеш, прав падни!
---
Axis of faith; Raw, and untamed in spirit
To do and undo...
We chew this world; And Spit it out
PMEmail Poster
Top
korsarq
Публикувано на: 02-04-2018, 12:30
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 230
Регистриран на: 30.11.16



Това е ясно очевидно с тази имплементация която ползвам има някакъв проблем щото не винаги връща no data в края.


--------------------
It gladdens me to know that Odin prepares for a feast.
Soon I shall be drinking ale from curved horns.
This hero that comes into Valhalla does not lament his death!
I shall not enter Odin's hall with fear.My death comes without apology!
And I welcome the valkyries to summon me home!
PMEmail Poster
Top
thrawn
Публикувано на: 02-04-2018, 13:41
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1495
Регистриран на: 17.01.17



Трябва да четеш с таймаут, при това достатъчно висок, та да гарантира че данните са пристигнали. В противен случай можеш да получиш -1 преди достигането на края на потока.
PMEmail Poster
Top
kierenski
Публикувано на: 02-04-2018, 15:35
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 212
Регистриран на: 10.01.16



@korsarq
HTTP отовора е доста комплексен.
Обикновено се четат първите 2048 байта което ти са хедърите и после сканираш хедарите за хедър с име "Length: ". Това ти дава инфо колко данни следват след края на хедърите.

Хедърите са разделени на редове които завършват с "\r\n" което е край на ред.
Хедърния блок завършва "\r\n\r\n" т.е. един празен ред и ред за край след което следват данните с големина посочена в хедъра "Length".
PMEmail Poster
Top
korsarq
Публикувано на: 02-04-2018, 15:36
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 230
Регистриран на: 30.11.16



Значи сега при четене може да върне no data, но да има още данни за получаване и след определено време да върне че има данни което мисля че е нормално за този протокол.Така че не мога да използвам това no data като маркер за край на респонса.Както бях написал в началото ако няма content length като хедър доколкото разбрах ще се върне хедър connection close и ще се затвори връзката.В този случай функцията за четене ще ми върне грешка connection close или нещо от сорта.Дали е правилно да използвам това като маркер за край или попускам нещо?


--------------------
It gladdens me to know that Odin prepares for a feast.
Soon I shall be drinking ale from curved horns.
This hero that comes into Valhalla does not lament his death!
I shall not enter Odin's hall with fear.My death comes without apology!
And I welcome the valkyries to summon me home!
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 02-04-2018, 15:42
Quote Post



Име: Джава
Група: Потребител
Ранг: Редовен член

Мнения: 431
Регистриран на: 21.02.18



QUOTE
no data

Какво е това ? Има EOF което означава End Of File - тоест няма повече. Такова нещо като no data няма

QUOTE
но да има още данни за получаване и след определено време да върне че има данни което мисля че е нормално за този протокол
HTTP н еработи така, така че не - не е нормално

Това мнение е било редактирано от Gamma Goblin на 02-04-2018, 15:43


--------------------
Напред! Живота е сраженье!
Напред! И прав всегда ходи!
Напред, макар към поражение!
Ако ще паднеш, прав падни!
---
Axis of faith; Raw, and untamed in spirit
To do and undo...
We chew this world; And Spit it out
PMEmail Poster
Top
kierenski
Публикувано на: 02-04-2018, 15:43
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 212
Регистриран на: 10.01.16



QUOTE
Значи сега при четене може да върне no data, но да има още данни за получаване и след определено време да върне че има данни което мисля че е нормално за този протокол.Така че не мога да използвам това no data като маркер за край на респонса.Както бях написал в началото ако няма content length като хедър доколкото разбрах ще се върне хедър connection close и ще се затвори връзката.В този случай функцията за четене ще ми върне грешка connection close или нещо от сорта.Дали е правилно да използвам това като маркер за край или попускам нещо?

Хедъра "connection: close" се използва да укаже че след като върне отговора няма да постъпват повече заявки, ако могат да постъпват се ползва "connection: keep-alive".

Ако няма хедър "content length" се има в предвид че след "\r\n\r\n" няма да има данни (payload), т.е. е с размер 0.

PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (4) [1] 2 3 ... последна » Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2018 | BG Development | All Rights Reserved
RSS 2.0