[elektro] UDP bejövő csomag észlelés
SZIGETI Szabolcs
szigiszabolcs at gmail.com
Mon Aug 24 14:00:47 CEST 2015
Hali!
Ugyan nem nekem szól a kérdés, de azért beleszólok. Két problémát látok. Az
egyik az, hogy a socket, az tulajdonképpen a hálózatikezelés egy
absztakciós szintje, vagy mondhatnám azt is, hogy egy API-t valósít meg.
Így socket nélkül nem tudsz hozzáférni a hálózathoz.tehát nincs olyan, hogy
valahogy az oprendszert megkerülve belebűvölsz a még fel sem dolgozott
csomagokba. (Persze dolgozhatsz etherent vagy IP szinten is, de kétlem,
hogy ezt akarod).
A másik, fontosabb dolog a protokoll választása. Az UDP egy kapcsolat
mentes protokoll, nagy vonalakban a fogadó fél nyit egy socketet, azon
fülel és bárki küld arra a portra egy UDP csomagot, azt meg fogja kapni.
Ennyi. Nem tudom mi a feladat, mérési adataoknak kell bejönni, vagy
hasonló, de a leírásodból úgy tűnik, hogy több kliens akar valamiféle
kapcsolatot létesíteni a szervereddel, ahol külön külön folyamatok fogják
kezelni a kliensek által küldött anyagot. De probléma, hogy egy adott
portra érkező UDP csomagokat hogyan tudod szétválogatni.
Szerintem ide a TCP sokkal jobb választás, mivel az az összes fenti
problémát megoldja.
1. A szervered egy porton (socketen) figyel és ha egy kliens kapcsolatot
akar létesíteni, akkor felépül a kapcsolat (indíthatsz új szálat ha
akarsz), és áthelyeződik egy másik portra. tehát egyrészt mindig csak egy
porton kell felépíteni, de minden kliens számára dedikált kapcsolat lesz.
2. Nem kell semmiféle saját azonosítókon, miegyebeken gyökölni, az
automatikusan megvan.
3. Nem kell félni elveszett csomagoktól, pillanatnyi kimaradásoktól. UDP
esetében, hacsak nem elfogadható az esetleges adatvesztés, akkor erről
neked kell gondoskodni.
4. A kapcsolat lezárása (vagy időtúllépés) esetén minden erőforrás
felszabadul az adott kapcsolattal összefüggésben (rendes oprendzser/IP
stack feltétlezve).
5. talán még programozni is egyszerűbb, mert nem csomagonként, hanem
bájt-folyamban jön az adat.
Hátrány, a nagyobb erőforrás igény, de a mai világban azért ez nem gond.
Szabolcs
2015. augusztus 24. 12:33 Skandar Graun írta, <sgraun at gmail.com>:
> Már változás alatt... de még képlékeny.
> Te mit javasolnál ortodox módon egy új eszköz felcsatlakozásához?
> Komolyan kérdem, nem kötözködve.
>
> 2015. augusztus 24. 10:00 Kiss Gabor írta, <kissg at ssg.ki.iif.hu>:
>
> > On 08/21/2015 09:35 PM, Skandar Graun wrote:
> > > Java, udp kommunikáció.
> > > Valahogy észlelni kellene, hogy bejött egy udp datagram egy portra...
> de
> > > jelenleg csak akkor tudnánk meg, hogy a portra bejött egy datagram, ha
> > > egyből be is olvassuk a socketbe.
> > > Mi erre a megoldás, hogyan lehet egy datagramot beazonosítani
> (portszámot
> > > meghatározni) socketbe tétel előtt, hogy megnyissuk neki a szükséges
> > > socketet (mindig csak annyi socket legyen nyitva, ahány kliens épp
> > > kommunikál és minden kliens statikus portra van konfigurálva)?
> >
> > Ez nem éppen szokásos módja a a hálózati kommunikációnak.
> > (Khm... "unortodox".)
> > Ha te kezedben van a protokoll, javaslom változtasd meg.
> > Ha készen kaptad, akkor térdre! Imához!
> >
> > g
> >
> > -----------------------------------------
> > elektro[-flame|-etc]
> >
> -----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list