Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Hálózatos programok készítése
Készítő: Nagy Tibor István
2
Hálózati kommunikáció
Két hálózatra kötött gép a következő rétegeken keresztül kommunikálhat egymással: Alkalmazási réteg http, ftp, telnet, smtp Szállítási réteg TCP, UDP Hálózati réteg IP Adatkapcsolati réteg eszközmeghajtók Forrásgép Alkalmazási réteg HTTP, ftp, telnet, smtp Szállítási réteg TCP, UDP Hálózati réteg IP Adatkapcsolati réteg eszközmeghajtók Célgép
3
Adatkapcsolati réteg Feladata az adatbitek továbbítása,
Átviteli hibák kiszűrése
4
Hálózati réteg Feladata a hálózatra kötött gépek azonosítása és a köztük történő adatcsere biztosítása A gépeket valamilyen cím alapján azonosítja Ez a réteg nem biztosítja a hibátlan adatátvitelt IP (Internet Protocol)
5
Szállítási réteg Feladata a megbízható csomagtovábbítás,
Illetve egy adott gépen belül a különböző programok azonosítása (port) TCP (Transmission Control Protocol) – összeköttetés-orientált kommunikáció UDP (User Datagram Protocol) – összeköttetés-mentes kommunikáció Nem garantálja a csomagok továbbítását
6
Alkalmazási réteg Alkalmazás-specifikus protokollok
FTP (File Transfer Protocol) HTTP (HyperText Transmission Protocol) SMTP (SendMail Transmission Protocol)
7
Kliens-szerver architektúra
Szerver fogalma: egy hálózatra kötött gépen futó program, amely más – szintén hálózatra kötött – gépek számára biztosít bizonyos szolgáltatásokat Szerver adatai: Hostname : annak a gépnek a hálózati neve, amelyen a szerverprogram fut Port : egy olyan 16 bites szám, amely a futó szervert azonosítja; ezen keresztül fogadja a szerverprogram a kéréseket
8
Portok A szerverprogram adja meg, hogy melyik porton keresztül hajlandó a kliensektől kéréseket fogadni Van egy szabványos lista, amelyben a már létező szolgáltatások és a hozzájuk rendelt portok találhatók A hozzárendelt portok listája: Pl.: HTTP port = 80 IMAP port = 143
9
Kliens-szerver architektúra
Kliens fogalma: egy hálózatra kötött gépen futó program, amely igénybe veszi egy másik gépen futó szerverprogram szolgáltatásait A kliensnek ismernie kell a szerver hostnevét és portszámát
10
Kliens-szerver architektúra TCP protokollal
Összeköttetés-orientált kommunikáció A kommunikáció kezdeményezésekor létrejön a kapcsolat a szerver és kliens közt A kapcsolat a kommunikáció befejezéséig él Garantált az adatok eljutása a feladótól a címzettig Garantált az adatok helyes sorrendje
11
Kliens-szerver architektúra TCP protokollal
A kommunikáció fájl-streamek segítségével történik Mindkét oldalon van egy-egy bemeneti, ill. egy-egy kimeneti stream A szerver és a kliens oldalon is van egy-egy csatoló (socket); ezt a két csatolót kötik össze a streamek
12
Kliens-szerver architektúra (TCP)
output input Server- Socket Socket Szerver input Kl iens output
13
Szerverprogram elkészítése (TCP)
A következő osztályokat kell használni: ServerSocket – a szerver csatolója Socket – a kliens csatolója Bemeneti és kimeneti adatfolyamok
14
Szerverprogram elkészítése (TCP)
Létre kell hozni a szerver csatolóját: ServerSocket ss = new ServerSocket(port); port = bármilyen portszám. Ha 0, akkor kiválasztja az első szabad portot Várakozni kell egy kliensre: Socket client = ss.accept(); Létrehozni a streameket: … in = client.getInputStream(); … out = client.getOutputStream(); Adatforgalom (readLine(), println() !)
15
Szerverprogram több klienssel (TCP)
Több kliens kéréseinek kiszolgálása: A bejelentkező kliensekkel történő adatcsere egy-egy külön szálban történik Miután az accept() metódussal lekérdeztük a bejelentkezett klienst, kéréseit egy újonnan létrehozott szálban szolgáljuk ki Miközben az új szál foglalkozik a bejelentkezett klienssel, a szerver tovább várja egy újabb kliens jelentkezését
16
Kliensprogram elkészítése (TCP)
Szükséges osztályok: Socket – a kliens csatolója a szerver felé Bemeneti és kimeneti adatfolyamok – a kliens és a szerver közötti adatforgalom lebonyolítására
17
Kliensprogram elkészítése (TCP)
Kliens csatolójának létrehozása: Socket cs = new Socket(hostname, port); Filecsatornák lekérdezése: … in = cs.getInputStream(); … out = cs.getOutputStream(); Adatforgalom (readLine(), println() !)
18
Kliens-szerver architektúra UDP protokollal
Összeköttetés-mentes kommunikáció Nincs állandó összeköttetés a feladó és címzett között Az adatok megérkezése nem garantált a feladótól a címzettig Az adatok helyes sorrendje sem garantált Egymástól független adatcsomagok elküldésére / fogadására alkalmas
19
Kliens-szerver architektúra (UDP)
Datagram- Socket Datagram- Socket Kl iens Szerver
20
Szerverprogram elkészítése (UDP)
A következő osztályokat kell használni: DatagramSocket – a szerver csatolója DatagramPacket – a fogadni, vagy elküldeni kívánt adatcsomag
21
Szerverprogram elkészítése (UDP)
Csatoló létrehozása: DatagramSocket ds=new DatagramSocket(port); Várakozás egy kliens jelentkezésére: DatagramPacket dp; dp=new DatagramPacket(buf,buf.length); ds.receive(dp); Kliens azonosítása: InetAddress ia=dp.getAddress(); int port=dp.getPort(); Válasz küldése a kliensnek: dp=new DatagramPacket(buf, buf.length, ia, port); ds.send(dp);
22
Kliensprogram elkészítése (UDP)
Szükséges osztályok: DatagramSocket – a kliens csatolója DatagramPacket – a fogadni, vagy elküldeni kívánt adatcsomag
23
Kliens elkészítése (UDP)
Csatoló létrehozása: DatagramSocket ds=new DatagramSocket(); Szerver címének megadása: InetAddress ia=InetAddress.getByName(host); Kérés küldése a szervernek: dp=new DatagramPacket(buf, buf.length, ia, port); ds.send(dp); Válasz fogadása a szervertől: dp=new DatagramPacket(buf, buf.length); ds.receive(dp);
24
Multicast program készítése
A multicast szerver nem várakozik egy kliens bejelentkezésére Egy meghatározott csoportcímre, meghatározott porton keresztül küldi a csomagokat A multicast kliens nem jelentkezik be a szerverhez A szerver portját figyelve várja a szervertől érkező üzeneteket
25
Multicast szerverprogram elkészítése (UDP)
Csoportcím megadása: InetAddress ga=InetAddress.getByName(csop); Csomag elküldése a csoport minden tagjának: DatagramPacket dp; dp=new DatagramPacket(buf, buf.length, ga, port); ds.send(dp);
26
Multicast kliensprogram készítése (UDP)
Az üzenetek fogadása MulticastSocket-en keresztül történik: MultiCastSocket ms=new MulticastSocket(port); A csoport címének meghatározása: InetAddress ga=InetAddress.getByName(csop); Csatlakozás a csoporthoz: ms.joinGroup(ga); Adatok olvasása a szervertől ciklusban: ... ds.receive(dp); ... Lecsatlakozás a csoportról: socket.leaveGroup(ga);
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.