Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Hálózatkezelés Java-ban

Hasonló előadás


Az előadások a következő témára: "Hálózatkezelés Java-ban"— Előadás másolata:

1 Hálózatkezelés Java-ban

2 TCP-IP hálózatkezelés
Alkalmazási réteg: - alkalmazói programok, kiszolgálók, ügyfelek stb. - Alkalmazás programozható felület (API) OS-Kernel réteg - Transport (átviteli) réteg - Hálózatkezelési réteg - Adatkapcsolati réteg

3 Szállítási réteg: (TCP Fej+(TCPÜzi:Fej+Üzi))
Alkalmazási réteg: Alkalmazásfüggő protokollok (pl. HTTP) Üzenet+fejrész összeállítása (Fej+Üzi) Szállítási réteg: (TCP Fej+(TCPÜzi:Fej+Üzi)) Két gép közötti kommunikáció Kétféle szolgáltatás (TCP, UDP) Hálózati réteg: (IP Fej+(TCPFej+TcpÜzi)) A csomagok hálózaton keresztüli eljuttatása a célig Routing (üzenet átirányítás) stb. Alsóbb rétegek: Adatkapcsolati réteg Fizikai réteg: bitenkénti átvitel

4 Hálózati programozás A szállítási rétegben definiált protokollokat implementáljuk DE ENNÉL Egyszerűbb Socket implementálása

5 SOCKET Foglalat, csatlakozó, lyuk, zokni
Absztrakt programozástechnikai fogalom Programok kommunikációját megkönnyítő programozható felület Folyamatok, amelyek kommunikálnak Folyamatok: akár egyazon gépen, akár különböző gépen

6 SOCKET Kliens-szerver kommunikáció A Socketnek két vége van
Kliens oldalon Szerver oldalon Összeköttetés alapú socketek (TCP) Adatfolyam (stream) socket A két fél közötti átviteli csatorna Megbízható kommunikáció Kapcsolatot fel kell építeni A csomagok sorrendje garantált Telefon hálózathoz hasonló Adatfolyam: Dedikált hálózati útvonal Cső, amelyben két irány van, az input és az output

7 Összeköttetés mentes Socket típusok (UDP)
Adatcsomag (datagram socket) Nem eléggé megbízható a szolgáltatás Csomagok elveszhetnek vagy később érkezhetnek Csak szerencse kérdése, hogy egy elküldött csomag megtalálja-e a címzettet Hagyományos levélküldéshez hasonlít

8 A kommunikáció eszközei
Socket (csővezeték) Kommunikáló gépek azonosítása: erre való az IP cím Gépen belül a kommunikáló folyamatok azonosítása: erre való a PORT

9 PORT 16 bites szám (össz. 65536 db.) „Szabványos” portok (http, ftp)
Szabadon használhatók: a 2000 felettiek A hivatkozás módja: IP_CÍM:PORT Pl :13312

10 Összeköttetés alapú hálózatkezelés
A kiszolgáló oldaláról: TCP port lefoglalása Portra rákapcsolódás, üzenetre várakozás Csatlakozás esetén kapcsolat felépítése Üzenetek fogadása és küldése Kapcsolat lebontása Port elengedése

11 Összeköttetés alapú hálózatkezelés
Az ügyfél lépései: Kapcsolódás az kiszolgáló gép adott portjára Ha a szerver aktív, akkor a kommunikációs csatorna felépül Adatküldés, adatfogadás (forgalmazás) Kapcsolat bontása

12 Összeköttetés mentes hálózatkezelés
Kiszolgáló és ügyfél is: Létrehoznak egy UDP kommunikációs portot Ezen keresztül adatcsomagokat küldenek és fogadnak Minden csomagot külön meg kell címezni Lekapcsolódnak a portról

13 Hálózatkezelés Java-ban
Csak összeköttetés alapú hálózatkezeléssel foglalkozunk (de UDP datagramok is vannak…) A java.net csomagban

14 Kiszolgáló programozása
Port definiálása (beolvasandó értékként vagy rögzítetten) Pl. int port=13310; Kiszolgáló foglalat létrehozása: ServerSocket ss; ss=new ServerSocket(port); Ügyfél kapcsolódási kérelmének kezelése: A szerver létrehoz egy összeköttetést (TCP kapcsolatot az ügyféllel) Socket s; while (true) { s=ss.accept(); }

15 Kiszolgáló programozása
A kommunikációs csatorna adatfolyamának lekérése: BufferedReader input=new BufferedReader( new InputStreamReader(s.getInputStream()); PrintWriter output = new PrintWriter (s.getOutputStream); Üzenetváltás a csatornában: request=input.readLine(); output.println(response); output.flush(); Kapcsolatbontás a klienssel s.close(); Hálózatkezeléses üzemmód bontása: ss.close();

16 Ügyfél programozása A szerver megadása:
IP cím: String – névfeloldás automatikus Port: Integer String ipcim=„gamma.ttk.pte.hu” vagy String ipcim=„ ” Kapcsolódás a kiszolgálóhoz. Foglalat létrehozása. Socket s=new Socket(ipcim,port);

17 Ügyfél programozása Elkérjük a kommunikációs csatorna adatfolyamait:
BufferedReader input = new BufferedReader( new InputStreamReader(s.getInputStream())); PrintWriter output=new PrintWriter( s.getOutputStream()); Üzenetváltás a csatornában: request=input.readLine(); output.println(response); output.flush(); A kiszolgáló kapcsolat bontása: s.close();

18 Mi hiányzik még? Hibák kezelése: Kivételkezelés!!!!
Megszakad a kapcsolat Foglalt a port Nem létező IP cím Kivételkezelés!!!! A Java megköveteli try-catch-finally szerkezet

19 Kiszolgáló példa import java.io.*; import java.net.*; public class Szerver { static int port; static ServerSocket ss; static Socket s; static online=1;

20 public static void main(String args[]){ try{ ss=new ServerSocket(port); }catch(Exception e){} while(online){ try{ s=ss.accept(); kiszolgal();} catch(Exception e){} finally{ try{s.close();} catch(Exception e){} }//while try{ss.close();} catch(Exception e){} }

21 public static void kiszolgal(){ BufferedReader input= new Bufferedreader( new InputStreamReader( s.getInputStream())); PrintWriter output = new PrintWriter( s.getOutputStream()); /*itt történik a kiszolgálás*/ String be=input.readLine(); output.println(String ki); output.flush(); }

22 Ügyfél (vázlat) socket s=new Socket(ip_cim,port)… BufferedReader…
PrintWriter… input.readLine()… output.println() output.flush()… s.close()…


Letölteni ppt "Hálózatkezelés Java-ban"

Hasonló előadás


Google Hirdetések