NIO, hálózati kapcsolat nagyszámú klienssel
Az új Java IO lehetőséget biztosít számunkra, hogy egy szálról kezeljünk nagyszámú kapcsolatot
- Készítsünk egy szerver és egy kliens osztályt.
- Hozzunk létre egy
ServerSocketChannel
-t és kapcsoljuk egy tetszőleges localhost port-hoz.
- Állítsuk a channel-t nem blokkolóra. Hozzunk létre egy
Selector
-t és regisztráljuk be a channel-t.
- Hozzunk létre egy
ByteBuffer
-t a bejövő üzeneteknek.
- Minden select hívás során az új kapcsolatokat regisztráljuk be a selector-hoz. Az érkezett adatokat olvassuk be a
ByteBuffer
-be és írjuk ki a konzolra.
- Egy speciális üzenet jelezze a kilépést, ekkor a bontsuk a kapcsolatot
close
hívás a channel-en.
- A kliens hozzon létre egy megadott számú (mondjuk 1000) kapcsolatot a szerverrel, hogy teszteljük a skálázhatóságát. Küldjön néhány üzenetet, majd lépjen ki. Az egyes kapcsolatokat fésüljük össze, tehát először mindenki küldje el az első üzenetet, majd mindenki a másodikat és így tovább. Így a szervernek egyszerre kell nagyszámú kapcsolatot fenntartani.
- Szorgalmi: fejlesszük tovább a szervert, készítsük fel nagy méretű üzenetek fogadására. Az üzenetek végét zárja sorvége. Ha a fogadott üzenet elfogyott és nem sorvége karakterre végződik, akkor el kell tárolnunk, hogy egyesíthessük a maradék részével.
Olvasnivaló