Adatküldés több eszköznek egyidőben
2010-11-02T20:05:47+01:00
2010-11-03T14:51:47+01:00
2022-07-24T22:07:29+02:00
  • Én UDP broadcast-tal oldanám meg, méghozzá az általad is javasolt 8-as csoportos megoldással. Mind a 8 eszköz venné a kilobájtos csomagot, amelynek megfelelő pozíciójából kivenné ami neki szól. Nincs kapcsolatfelépítési idő (tcp syn, ack, rst, ...), a socket nyitva marad(hat) mindkét oldalon. Az esetleges közbeiktatott router-ek sem fogják purgálni a tábláikból a kapcsolatot.
    Mutasd a teljes hozzászólást!
  • Akkor, ha jól értem, te azt mondod, hogy nyissak meg 128 kapcsolatot, tartsam nyitva és küldjek folyamatosan adatot.

    Milyen protokollt érdemes használni? UDP elvileg gyorsabb, de nem garantált, hogy megérkezik. Ez nekem nem jelentene problémát.
    Ezt az UDP broadcast dolgot vessem el vagy életképes megoldás?
    Mutasd a teljes hozzászólást!
  • Gondolom az eszköz működésére nincsen ráhatásod, mert szerintem az abszolút egyszerre történő adatküldés csak a szgép oldaláról nem megoldható, hacsak nincs a gépben is 128 hálókártya.

    Szerintem maga az adatküldés nem sok idő, inkább a kapcsolat felépítése macerás.
    Ha te 128 eszköznek 128 byte adatot akarsz küldeni, akkor az 16kbyte.
    Egy 100Mbit es hálón másodpercenként 12.5Mbyte adatot küldhetsz ami 1 ms alatt ~ 100 kbyte (mivel ez elméleti sebesség, legyen csak 48 kbyte) ez még mindig bőven 3x nagyobb mint ami neked kell. (ergo ha 40ms-ed van, akkor 120x vagy túlbiztosítva)

    Ha a kapcsolatokat nem építgeted folyton, hanem egyszer rányitsz az eszközökre, és folyamatosan nyitva maradnak a portok, akkor szerintem a 40ms időben annyi tartalék marad, hogy nem ennek kellene lennie a szűk keresztmetszetnek.

    Mutasd a teljes hozzászólást!
  • A 128 eszköznek külön-külön saját, egyedi IP-je van
    Mutasd a teljes hozzászólást!
  • Most adott 128 eszköz külön egy-egy IP-n, vagy egy IP-n van egy eszköz, és azon belül az IP csomag címzi meg az adott eszközt?
    Mutasd a teljes hozzászólást!
  • Sziasztok!
    Belefutottam egy megoldandó problémába aminek megoldásához meghallgatnám a véleményeket.
    Következő a feladat:
    Adott 128 db eszköz amikhez egyszerre kell adatot küldeni a PC-ről, de mindegyiknek mást. Kb. 40-50 msec-enként kéne adatot küldeni. Egy eszköznek kb 128 bájtot kell átküldeni.
    Több megoldás is felvázolódott bennem.

    Írok egy programot ami egy for ciklusban egyenként küld az eszközöknek TCP csomagot. Itt a problémám az, hogy nem tudom megsaccolni, hogy az első eszközhöz küldés és az utolsó eszközhöz küldés között mennyi idő telik el. Vagyis így nem látom garantáltnak azt, hogy egyszerre kapják meg az eszközök az adatot. További kérdésem ezzel kapcsolatban, ha a PC programban létrehozok több szálat, és azok mindegyike külön küldi a TCP csomagot, akkor az a valóságban mennyire fognak egyszerre menni?

    A másik megoldás, hogy UDP protokollt használok. Broadcast módban küldök csomagokat amit mindenki vesz, és a neki megfelelő rész az övé. Itt a következő problémába futottam. Mivel ezek az ezközök korlátozott sebességűek, így 1kbájt adat feldolgozása kb 10 msec ig tart. 1kbájtba (eszközönként 128bájt) 8 eszköznek az adata fér bele. Azt találtam ki, hogy csoportokba osztom az eszközöket, mondjuk 8-asával. Mindegyik csoport külön porton nézi az UDP csomagokat. Ezzel az elgondolással 16 porton fogok küldeni. De itt visszajutok a TCP-s problémához, hogy pl egy C# program 40msecenként ki tud-e adni 16 csomagot, 16 különböző portra?

    Nekem ez a második megoldás lenne a szimpatikusabb.

    Lehet, hogy teljesen rossz irányban gondolkozom.
    Véleményeteket szívesen fogadom.

    üdv,
    Gábor
    Mutasd a teljes hozzászólást!
abcd