Autor Téma: Synapse UDP Multicast  (Přečteno 726 krát)

Offline raul

  • Hrdina
  • ****
  • Příspěvků: 420
  • Karma: 15
    • Verze Delphi: FPC :D
Synapse UDP Multicast
« kdy: 16-02-2020, 05:34:29 »
Zdarec,

po mnoha hodinach stravenych hledanim proc android (Pixel 3a, Xiaomi Mi9) neprijima udp broadcast (odesila (windows prijmou), ale neprijme) (i pres zaply MulticastLock), zkousim rozbehat multicast avsak:

  fAnnSock := TUDPBlockSocket.Create;
  try
    fAnnSock.CreateSocket;
    fAnnSock.Bind('0.0.0.0', IntToStr(22348));
    if fAnnSock.LastError <> 0 then
    begin
      log.d('Socket bind error(1) : ' + fAnnSock.LastErrorDesc);
      Exit;
    end;
    log.d('localip:'+ IpToStr(fAnnSock.LocalSin.sin_addr.s_addr));

    fAnnSock.AddMulticast('234.5.6.7');
    if fAnnSock.LastError <> 0 then
    begin
      log.d('Socket AddMulticast error(2) : ' + fAnnSock.LastErrorDesc);
      Exit;
    end;

selze s error(2) - Invalid Argument a jiz se mi nepodarilo vubec vygooglit proc. Zkousel jsem to i pres Indy (byt je toliko neznam). (Zkousel jsem i apptethering demo, ktere taktez nefunguje (melo by ject pres UDP broadcast take)).

Poradi nekdo zkusenejsi ?
Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux, (občas Delphi)

Offline geby

  • Plnoletý
  • ***
  • Příspěvků: 241
  • Karma: 17
    • Verze Delphi: 7, 2007, XE2, 10.2
    • Synapse
Re:Synapse UDP Multicast
« Odpověď #1 kdy: 20-02-2020, 18:18:57 »
Není třeba té android aplikací přidělit nějaké oprávnění?

Offline raul

  • Hrdina
  • ****
  • Příspěvků: 420
  • Karma: 15
    • Verze Delphi: FPC :D
Re:Synapse UDP Multicast
« Odpověď #2 kdy: 20-02-2020, 18:21:58 »
Je a pridelene je, stejne jako multicastlock. Nakonec tak nejak obcas nejakej broadcast packet i dojde - nekdy hned, nekdy treba po pul minute (posilam 1*/s). Vtipny je, ze po startu aplikace do cca 3 vterin dorazi vse. Prozatim to resim tak, ze distribuuju seznam zarizeni pres unicast na ostatni - abych eliminoval ty prodlevy obcas. Nelibi se mi to, ale jinak jsem to nerozbehal.
Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux, (občas Delphi)