На стороне клиента я использую:
mosquitto_pub -t tpc -m msg
На стороне сервера я использую неблокирующий сокет и socket()
API:
https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzab6/xnonblock.htm
После первого полученного пакета я отправляю подтверждение подключения пакета.
Для каждого принятого пакета я печатаю сколько байт было получено и весь буфер в гекс.
Я сравниваю полученные данные с захватом WireShark.
Иногда это хорошо работает:
37 bytes received - Connect Command
10 bytes received - Publish Message [tpc]
2 bytes received - Disconnect Req
Иногда я получаю Требование отключения внутри Publi sh Сообщение [tpc] :
37 bytes received - Connect Command
12 bytes received - Publish Message [tpc] + Disconnect Req
Последние два байта: Требование отсоединения :
30
8
0
3
74
70
63
6d
73
67
ffffffe0 <--
0 <--
Как мне избежать этих ситуаций и получить всегда 3 пакеты?