130 likes | 280 Views
A Java nyelv. Hálózatkezelés, java.net Elek Tibor. Hálózatkezelés.
E N D
A Java nyelv Hálózatkezelés, java.net Elek Tibor
Hálózatkezelés • java.net csomag:- IP cím kezelés: Host azonosítás (InetAddress, Inet4Address, Inet6Address), Host és port azonosítás (InetSocketAddress)- Socket kezelés: Kapcsolat-orientált (TCP) protokoll (Socket, ServerSocket),Kapcsolat nélküli (UDP) protokoll (DatagramSocket)- URL kezelés: Erőforrás azonosítás (URI, URL), kapcsolat a távoli erőforrással és kezelés (URLConnection, URLStreamHandler, ContentHandler)
Hálózatkezelés • InetAddress- nincs konstruktor- Host megtalálása:static InetAddress getByAddress(byte[])static InetAddress getByName(String)static InetAddress getLocalHost()- Tájékozódás a hostról (pl.)String getHostAddress()String getHostName()boolean isReachable(int timeout)
Kapcsolat mentes kommunikáció • Üzenet küldés • Jellemzői:- UDP alapú - Nem megbízható- szerver-kliens (fogad, küld)- üzenet szórás lehetősége • DatagramSocket: kommunikációs végpontDatagramPacket: csomag
Kapcsolat mentes kommunikáció • Szerver: - DatagramSocket létrehozása egy port-t megadva, - várakozás a csomagokra. • kliens: - DatagramSocket létrehozása, - csomag létrehozása megadva a címzett host-t, port-t, üzenetet, üzenet hosszt, - csomag elküldése
Kapcsolat alapú kommunikáció • Jellemzői:- TCP alapú - Alacsony szintű két irányú kommunikáció • Szerver-kliens- szerver: (ServerSocket) egy host egy adott port-ján várja a kapcsolódásokat, egy szerverhez több kliens is kapcsolódhat, minden kapcsolódó klienshez felépül egy kapcsolódási végpont (Socket)- kliens: (Socket) kapcsolat felvétel egy szerverrel (host és port), kommunikáció, kapcsolat bontás
Kapcsolat alapú kommunikáció • ServerSocket:- Létrehozás: kontruktorral, megadva a port számát. Megdobhat IOException, SecurityException, IllegalArgumentException. A szerverrel innentől kezdve felvehetjük a kapcsolatot, a kapcsolatok várakozó sorba kerülnek.ServerSocket ss = new ServerSocket(portSzam);Megadható még a várakozó sor max. mérete.
Kapcsolat alapú kommunikáció • ServerSocket:- Kapcsolat fogadás: az accept() metódus meghívásával kiveszi a sorból az elsőt. Ha nincs még bejövő kapcsolat akkor elkezd várni egy bejövő kapcsolatra (blokkoló!). Ha van, akkor létrehoz hozzá egy Socket-et, amin keresztül kommunikálhatunk. Socket s = ss.accept();//majd kommunikáció
Kapcsolat alapú kommunikáció • ServerSocket:- Több kapcsolat fogadása: egy kapcsolaton keresztüli kommunikáció hosszadalmas lehet, ezért célszerű külön szálat indítani.while(!vege) { Socket s = ss.accept(); //új szál indítása a kommunikációhoz}
Kapcsolat alapú kommunikáció • ServerSocket egyéb metódusok:- A kapcsolódni kívánó host címe:public InetAddress getInetAddress()A lokál host címe:public int getLocalAddress()A portszám lekérdezése:public int getLocalPort()
Kapcsolat alapú kommunikáció • ServerSocket egyéb metódusok:- Várakozási idő beállítása, lekérdezése (a várakozási idő letelte utánjava.io.InterruptedIOExceptiongenerálódik, a 0 érték esetén végtelenségig vár):public void setSoTimeout(int timeout) throws SocketExceptionpublic int getSoTimeout() throws IOException
Kapcsolat alapú kommunikáció • Socket:- A kapcsolódás végpontjai, mind a szerver, mind a kliens oldalon- Adatfolyamok nyerhetők ki belőlük, input és output is.- server oldali Socket megkapása az accept()-el- kliens oldali Socket kontruktorral, pl.:Socket(InetAddress host, int port)Socket(String host, int port)
Kapcsolat alapú kommunikáció • Socket:- Csatornák kinyerése:InputStream getInputStream() throws IOExceptionOutputStream getOutputStream() throws IOException- Lezárás:void close()- Távoli gép címe, helyi gép címe:public InetAddress getInetAddress()public InetAddress getLocalAddress()- Távoli gép portja, helyi gép portja:public int getPort()public int getLocalPort()