Synapse и широковещательные сообщения
Добавлено: 03.07.2016 15:37:46
Дано:
Смартфон на Android, который шлет сообщения (10 шт. с паузой в 100 млс. между ними) по UDP на адрес 192.168.0.255.
Ноутбук с Linux и второй ноутбук с Windows, которые ловят сообщения. Использую TUDPBlockSocket (в коде он SockMain).
Код:
Не постоянно, но теряются пакеты. Например Один ноутбук может пропустить 4 и 6 пакет из 10-ти отосланных; а второй ноутбук пропустить 2, 3 и 7, или не пропустить вовсе.
Если слать с Android по конкретному адресу (192.168.0.105), то потерь не бывает. Т.е. пакеты теряются только при широковещательном адресе.
Как обойти эту проблему? Или как другим способом отсылать данные сразу на несколько устройств (ноутбуки, смарты, и т.п.) одновременно?
Смартфон на Android, который шлет сообщения (10 шт. с паузой в 100 млс. между ними) по UDP на адрес 192.168.0.255.
Ноутбук с Linux и второй ноутбук с Windows, которые ловят сообщения. Использую TUDPBlockSocket (в коде он SockMain).
Код:
- Код: Выделить всё
while SockMain.WaitingData <> 0 do begin
// Считаем данные из буфера
q := SockMain.RecvPacket(-1);
// текущее время
tNowCheck := Time;
aMes[cou].s := q;
aMes[cou].t := tNowCheck;
cou += 1;
sleep(1);
end;
Не постоянно, но теряются пакеты. Например Один ноутбук может пропустить 4 и 6 пакет из 10-ти отосланных; а второй ноутбук пропустить 2, 3 и 7, или не пропустить вовсе.
Если слать с Android по конкретному адресу (192.168.0.105), то потерь не бывает. Т.е. пакеты теряются только при широковещательном адресе.
Как обойти эту проблему? Или как другим способом отсылать данные сразу на несколько устройств (ноутбуки, смарты, и т.п.) одновременно?