Programozás | Java, JSP » Hálózatkezelés a Javában

Alapadatok

Év, oldalszám:1999, 8 oldal

Nyelv:magyar

Letöltések száma:272

Feltöltve:2009. augusztus 27.

Méret:79 KB

Intézmény:
-

Megjegyzés:

Csatolmány:-

Letöltés PDF-ben:Kérlek jelentkezz be!



Értékelések

Nincs még értékelés. Legyél Te az első!


Tartalmi kivonat

-1- Hálózatkezelés a javában A java.net csomag a kommunikációval és a hálózati erőforrások elérésével kapcsolatos osztályokat tartalmazza. Két részre csoportosítható:   Socket-ekkel kapcsolatos osztályok - A Jáva Socket interfészének segítségével elérhetjük az Interneten használt alapvető hálózati protokollokat URL (Uniform Resource Locator) kezeléssel kapcsolatos osztályok - Segítséget nyújt a hálózati erőforrások eléréséhez. (Pl dokumentumok, programok, egyéb adatállományok) Socket-ek  A socket-ek alacsony szintű programozási interfészt nyújtanak a hálózati kommunikációhoz.  A programok közti adatcserét folyamokon keresztül oldják meg.  A Jáva különböző típusú socket-eket biztosít a két alapvetően elkülönülő hálózati protokollra: - kapcsolat-orientált protokoll (Socket osztály) A kapcsolat felépítése után a két program, mint egy telefonon keresztül kommunikálhat egymással, míg

a kapcsolatot az egyik fél meg nem szünteti. - kapcsolat nélküli protokoll (DatagramSocket osztály) A kommunikáció csak rövid üzenetek formájában zajlik. Kliensek és szerverek    Azt a programot nevezzük kliensnek, amelyik a kapcsolatot kezdeményezi, szervernek pedig azt, amely a kapcsolatkérést fogadja. A Socket osztály egy példánya reprezentálja a kapcsolat egy végpontját a kliens és a szerver oldalon is. A szerver alkalmazások a ServerSocket osztály egy példányának accept() metódusát használják arra, hogy a kliensek kapcsolatkéréseire várjanak. Ez a metódus hozza létre a klienssel való adatcseréhez szükséges Socket típusú objektumot. A szerveralkalmazás egyetlen ServerSocket típusú objektumot használ a különböző kliensekkel való kapcsolatfelvételre, de ezt követően minden egyes klienskapcsolatot már külön Socket típusú objektum jelképez. -2- Szerver Kliens Socket Server Socket Socket Socket Socket

Kliens Kliens szerver kapcsolat A kliensek  A klienseknek két információra van szükségük, hogy megtaláljanak, és kapcsolatot teremtsenek egy szerveralkalmazással: - a kiszolgáló gép hálózati címére, és - a kiszolgáló gép azon portcímére, melyen a szerver a kapcsolat-felvételi kérelmeket várja.  Kapcsolat nyitása a kliens oldalon: try { Socket s = new Socket("donat.bankihu", 25); } catch (UnknownHostException e) { System.outprintln("A szerver nem válaszol!");} catch (IOException e) { System.outprintln("Sikertelen kapcsolatfelvétel!");}  Ha egyszer egy kapcsolatot sikerült felépíteni, akkor kinyerhetjük belőle a kommunikációhoz szükséges folyamokat: try { Socket s = new Socket("donat.bankihu", 5318); OutputStream out = s.getOutputStream(); out.write(33); PrintWriter pr = new PrintWriter(out); pr.println("Helló"); BufferedReader br = new BufferedReader( new

InputStreamReader(s.getInputStream())); -3String st = br.readLine(); s.close(); } catch (UnknownHostException e) { System.outprintln("A szerver nem válaszol!");} Szerverek Miután egy kapcsolat felépült, a szerver ugyanolyan típusú Socket objektumokat használ, mint a kliensalkalmazás, bár a kapcsolat felépítéséhez először egy ServerSocket objektumot kell telepítenie valamelyik portra. try { ServerSocket ss = new ServerSocket(6111); while (!vege) { Socket s = ss.accept(); BufferedReader br = new BufferedReader( new InputStreamReader(s.getInputStream())); PrintWriter pr = new PrintWriter( s.getOutputStream(), true); // AutoFlush String st = br.readLine(); System.outprintln("Klienstől érkezett: " + st); pr.println("Viszlát!"); s.close(); } ss.close(); } catch (IOException io) {} Biztonság A biztonság felügyeletét a SecurityManager osztály végzi.  Applet-ek - Egy applet csak azzal a kiszolgálógéppel kezdeményezhet

kapcsolatot, ahonnan a böngészőprogram letöltötte. - Applet nem hozhat létre magának ServerSocket típusú objektumot.  Alkalmazások - Számukra bármely kiszolgálón futó szerveralkalmazás elérhető. - Létrehozhatnak ServerSocket típusú objektumot. A ServerSocket metódusai -4-       public ServerSocket( int port ) throws IOException - a megadott porton létrehozza az objektumot public ServerSocket( int port, int várakozó sor hossza) throws IOException public InetAddress getInetAddress() public int getLocaIPort() public Socket accept() throws IOException - várakozik egy kliens kapcsolatkeresési kérelmére, ha megérkezik, akkor visszatér a hozzá tartozó Socket tipusú objektummal public String toString() A Socket osztály metódusai            public Socket (String host, int port) throws UnknownHostException, IOException public Socket (String host, int port, boolean stream) throws IOException

public Socket (InetAddress cim, int port) throws IOException public Socket (InetAddress cim, int port, boolean stream) throws IOException public void close() throws IOException public InetAddress getInetAddress() public InputStream getInputStream() throws IOException public OutputStream getOutputStream() throws IOException public int getLocalPort() A helyi kommunikációs végpont azonosítója public int getPort() A kommunikációs partner portja public String toString() Az InetAddress metódusai        public String getHostName() - visszaadja az ehhez az Internet címhez tartozó host-nevet public byte[] getAddress() - visszaadja az Internet címet 4 byte-os formátumban public int hashCode() - az Internet címhez tartozó hash-kódot adja vissza public String toString() - String reprezentációban adja vissza az Internet címet public static InetAddress getLocalHost() throws UnknownHostException - visszaadja a helyi (programot futtató) host Internet címét

public static InetAddress getByName(String host) throws UnknownHostException - az argumentumban megadott nevű host Intemet címét adja vissza public static InetAddress[] getAllByName(String host) throws unknownHostException - az argumentumban megadott nevű host összes Internet címét visszaadja -5- A Java.net csomag osztályai Object DatagaramPacket DatagaramSocket MulticastSocket InetAddress ServerSocket Socket URL Osztály URLConnection Absztrakt osztály Java.net csomag -6- URL-ek     Az URL-ek Interneten elhelyezett objektumokra (bármilyen típusú adatforrásra) mutatnak. Azonkívül, hogy meghatározzák egy adattömeg helyét az Interneten, információt tartalmaznak az adatok kinyeréséhez használható protokollról is. Az URL-ek többnyire sztring-reprezentációban jelennek meg. Legáltalánosabb formája: protokoll://kiszolgáló/hely/objektum Az URL osztály  A Java nyelvben az URL-eket az URL osztály egy példánya

reprezentálja.  Egy URL objektum alkalmas valamely URL-lel kapcsolatos összes információ kezelésére, valamint segítséget nyújt az általa meghatározott objektum kinyeréséhez.  URL objektum létrehozása - karaktersorozatból: URL homePage = new URL("http://www.bankihu/doc/homepagehtml" ) ; - részekből: URL homePage = new URL("http", "www.bankihu", "doc/homepagehtml ); Az URL objektum    Az URL objektum létrejön függetlenül attól, hogy az általa reprezentált objektum létezik-e vagy sem. A létrehozás során az URL objektum nem teremt hálózati kapcsolatot a kiszolgáló géppel. A létrehozás alatt a Java elemzi az URL specifikációját és kiemeli belőle a használni kívánt protokollt, majd megvizsgálja, hogy ismeri-e. Abban az esetben ha nem ismeri MalformedURLException kivétel generálódik. Az URL tartalmának listája import java.net*; import java.io*; public class URLList { public static void

main(String [] args) { String st; try { URL homePage = new URL("http://schubert.bankihu/java/defaulthtml"); -7BufferedReaderdis = new BufferedReader( new InputStreamReader(homePage.openStream())); st = dis.readLine(); while (st != null) { System.outprintln(st); st = dis.readLine(); } dis.close(); } catch(Exception e) {System.outprintln(e);} } } Tartalomkezelők  A Java - a hagyományos folyamon keresztüli adatletöltésen kívül - lehetőséget biztosít URL-ek tartalmának, mint objektumoknak a kinyerésére.  Az objektumkénti letöltés a tartalomkezelők (Content Handler ) használatával valósul meg.  Egy URL objektumkénti letöltését az URL getContent() metódusának meghívásával kezdeményezhetjük.  A getContent() meghívásával az URL a következőket teszi: - felveszi a kapcsolatot a kiszolgáló géppel, - letölti az adatokat a kliens gépre a megadott protokoll segítségével, - megállapítja az adatok formátumát, és -

meghívja az adatformátumhoz tartozó tartalomkezelőt az objektum előállítására Protokollkezelők    Az adatok letöltése a kiszolgáló gépről a protokollkezelők (Protocoll Handler) segítségével történik. A megfelelő protokollkezelő meghatározása az URL specifikációjában történik (pl. "http", ftp". ) Az URL az adatok letöltése előtt megvizsgálja, hogy hozzáférhető-e a megadott protokollhoz tartozó protokollkezelő, ha igen, átadja neki a vezérlést. -8- Kliens Szerver Protokoll kezelő Adat Tartalom kezelő Objektum Tartalom- és protokollkezelők     A tartalomkezelő tevékenysége a protokollkezelő objektum kimenetére épü1. A protokollkezelő az adatok hálózati átvitelért, míg a tartalomkezelő a protokollkezelő által dekódolt adatokból való objektum létrehozásért felelős, így működésük közt nincs átfedés. A tartalomkezelő ugyanolyan inputból ugyanazt az objektumot

készíti el, számára lényegtelen, hogy az ő bemenete milyen protokollon keresztül érkezik meg. Így teljesen más protokollon alapuló URL-ek is használhatják ugyanazt a tartalomkezelőt (ha azt a tartalom indokolja). A kapott objektum feldolgozása  A tartalomkezelő által kapott objektum típusa ismeretlen, ezért cast-olni kell a tényleges típusra. (A cast-olás során ClassCastException kivétel váltódhat ki!) try { String s = (String)myURL.getContent(); } catch (Exception e) { } vagy Object content = myURL.getContent(); if (content instanceof String) { String s (String)content;