BG Development


Страници: (3) 1 2 [3]   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> MQTT, простичко, може и да си споделяме :)
NikB
Публикувано на: 24-07-2018, 18:03
Quote Post



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

Мнения: 1085
Регистриран на: 22.09.05



Да, има, но при ембедед системите, заради малките буфери, пакетите могат да идват на части, и/или веднага след пакета да дойде част от следващия. Когато натрупвам в приемния буфер, нямам увереност, че е само едно MQTT съобщение, затова, когато приема поредното MQTT съобщение (както каза - с контрола по дължина), скипвам следващите го нули (дано винаги са нули) и очаквам валиден MQTT MessageType.
PMEmail Poster
Top
gat3way
Публикувано на: 24-07-2018, 18:29
Quote Post



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

Мнения: 3263
Регистриран на: 22.06.12



А, това звучи малко странно, те по мрежата всички пакети трябва да идват опаковани в хедъри, както си му е реда, няма как да летят "на части", а тези хедъри малко или много си изискват ресурси за да се приготвят, имат чексуми най-малкото и в общия случай да цепиш малко съобщение на още по-малки никак не е плодотворно, съвсем отделно че TCP като протокол изисква и потвърждения и като го нацепиш така, разказваш играта и на мрежовата производителност, трябва да пазиш и изпратените пакети в ack прозореца за да може в случай че не ти се потвърдят да ги пратиш пак, абе не мисля че тези дето са правили малките неща със сензорите съзнателно са си го сложили това на главата.

По-скоро си мисля че се случва нещо друго - TCP като транспортен протокол никъде не ти гарантира че едно викане на recv или там каквато е функцията за четене от сокета ще ти върне точно едно съобщение, може да ти върне част от едно, може да ти върне едно плюс част от второто, може да ти върне няколко, това зависи от много неща, но няма как да му кажеш "като чета от сокета искам да изчета точно съдържанието на едно пристигнало съобщение". Това допълнено със странния момент че падващите байтове мрежовия стек не ти ги маха както би следвало да прави (което е доста странно) ти я създава тази ситуация, абе чудя се все пак ако гледаш дължината на mqtt payload-а и си направиш сметките за дължината и на хедърите на останалите протоколи (ip, tcp, етц) дали не можеш да коригираш случаите в които ти се падват така нещата защото става прекалено малък етернет фрейма. Ооообаче то това е частен случай, а mqtt-то може да върви и върху TLS да речем и там ще са съвсем различни нещата, така че не знам.
PMEmail Poster
Top
NikB
Публикувано на: 24-07-2018, 19:08
Quote Post



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

Мнения: 1085
Регистриран на: 22.09.05



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

Topic Options Страници: (3) 1 2 [3]  Reply to this topicStart new topicStart Poll

 


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