Podstawy Programowania sieciowego w Javie

Slides:



Advertisements
Podobne prezentacje
Wstęp do strumieni danych
Advertisements

Protokoły sieciowe.
Sieci komputerowe Protokół TCP/IP Piotr Górczyński 27/09/2002.
Programowanie wizualne PW – LAB5 Wojciech Pieprzyca.
Mechanizmy pracy równoległej
Sieci komputerowe Usługi sieciowe Piotr Górczyński 27/09/2002.
Przegląd protokołów rodziny TCP/IP (1)
Rozszerzalność systemów rozproszonych
Autor Roman Jędras Prowadzący: dr inż. Antoni Izworski Przedmiot:
Wykład 2: Metody komutacji w sieciach teleinformatycznych
Architektura systemu Gra strategiczna „Strusia Jama”
Architektura Systemów Komputerowych
RMI I RMI-IIOP Wprowadzenie Co to jest RMI?
Poj ę cia Sieciowe. IMAP-to internetowy protokół pocztowy zaprojektowany IMAP-to internetowy protokół pocztowy zaprojektowany POP3-to protokół internetowy.
Pojęcia sieciowe.
Inżynieria oprogramowania Lecture XXX JavaTM – część IV: IO
Usługi sieciowe Wykład 5 DHCP- debian Jarosław Kurek WZIM SGGW 1.
Zaawansowane technologie Javy Wykład 5 (6 marca 2012) Programowanie sieciowe (1)
Java – technologie zaawansowane Wykład 5 (4 kwietnia 2011) Programowanie sieciowe – URL.
Gniazda komunikacji sieciowej w języku Java
Monitoring Sieci Narzędzia Sieciowe.
PING: Program używany do diagnozowania połączeń sieciowych.
Komunikaty sterujące zestawu protokołów TCP/IP
12. GNIAZDA BSD Biblioteka funkcji związanych z gniazdami jest interfejsem programisty do obsługi protokołów komunikacyjnych. Została utworzona dla Unixa.
USŁUGI INTERNETOWE TCP/IP WWW FTP USENET.
Protokoły sieciowe.
Protokoły komunikacyjne
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Protokół Komunikacyjny
MODEL WARSTWOWY PROTOKOŁY TCP/IP
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
RODZAJE TRANSMISJI PRZESYŁANIE INFORMACJI W MODELU WARSTWOWYM
Jerzy Jelinek Paweł Korpowski
Prezentacja Adrian Pyza 4i.
Automatyka i Robotyka Systemy czasu rzeczywistego Wykład 4.
Wiadomości wstępne o sieciach komputerowych
Sieci komputerowe.
Obsługa systemu wejścia-wyjścia
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Systemy wejścia i wyjścia Michał Wrona. Co to jest system wejścia i wyjścia? Pobierania informacji ze źródeł danych, zdolnych przesyłać sekwencje bajtów,
Komunikacja przez sieć z wykorzystaniem biblioteki WINSOCK
Temat 10: Komunikacja w sieci
SYSTEMY OPERACYJNE Adresowanie IP cz3.
Laboratorium systemów operacyjnych
1 Strumienie Hierarchie klas strumieniowych, strumienie bajtowe - klasy InputStream i OutputStream i ich metody, klasa File, strumienie plikowe, strumienie.
Programowanie sieciowe w Javie
Aplikacje TCP i UDP. Łukasz Zieliński
Model OSI i TCP/IP, HTML, WWW
Systemy operacyjne i sieci komputerowe
Systemy operacyjne i sieci komputerowe
Systemy operacyjne i sieci komputerowe
Sieci komputerowe E-learning
Model warstwowy sieci ISO/OSI
1 Programowanie sieciowe Protokoły sieciowe, model warstwowy DOD, protokoły TCP i UDP, adresy IP, porty, gniazda, operacje na adresach - klasa InetAddress.
Andrzej Majkowski 1 informatyka +. 2 Bezpieczeństwo protokołu HTTP Paweł Perekietka.
FTP i www Informatyka Zakres podstawowy 1 Zebrał i opracował : Maciej Belcarz 11.
PODSTAWY SIECI KOMPUTEROWYCH - MODEL ISO/OSI. Modele warstwowe a sieci komputerowe Modele sieciowe to schematy funkcjonowania, które ułatwią zrozumienie.
Piotr Czapiewski Wydział Informatyki ZUT. Web Services Description Language.
Programowanie sieciowe w Javie Michał Kuciapski
Zakres wykładu Kierunki rozwoju oprogramowania systemów rozproszonych Własności wybranych architektur - problemy badawcze Przykładowe obszary zastosowań.
Model warstwowy ISO-OSI
Model OSI. Aplikacji Prezentacji Sesji Transportowa Sieciowa Łącza Danych Fizyczna WARSTWY: Aplikacji Prezentacji Sesji Transportowa Sieciowa Łącza Danych.
Strumienie w języku Java Bartosz Walter InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin realizacji:
Zaawansowane technologie Javy Wykład 4 (16 marca 2017)
Protokoły używane w sieciach LAN Funkcje sieciowego systemu komputerowego Wykład 5.
Model TCP/IP Wykład 6.
Wydział Matematyki, Informatyki i Architektury Krajobrazu
Sieci komputerowe Usługi sieciowe 27/09/2002.
Klasy adresów IP Adres sieci i adres rozgłoszeniowy
Zapis prezentacji:

Podstawy Programowania sieciowego w Javie Wykład 10 mgr inż. Michał Misiak

Podstawy sieci W Javie aplikacje sieciowe mogą być tworzone w warstwie aplikacji bez koniczności obsługi UDP/TCP Obsługa sieci jest niezależna od platformy Typ transportu: UDP: brak gwarancji doręczenia pakietu, brak gwarancji sekwencyjności doręczania pakietów, multicast TCP: niezawodna komunikacja, charakter połączeniowy, kontrola przepływu i transmisji Model odniesienia TCP/IP Warstwa aplikacji HTTP, FTP Warstwa Transportowa TCP, UDP Warstwa Sieci IP, ICMP, IGMP Warstwa Łącza ARP, RARP

Porty Przeznaczenie danych w Internecie określane jest przez: app app app app Przeznaczenie danych w Internecie określane jest przez: adres IP (32 bity) numer portu (16 bitów) Porty wykorzystywane są do kojarzenia aplikacji z danymi przychodzącymi na interfejs Numery portów: 0 – 65535 Zastrzeżone numery portów: 0 – 1023. Wykorzystywane do usług takich jak HTTP, FTP, etc… W TCP serwer rejestruje się do nasłuchiwania na danym gnieździe, skojarzonym z określonym portem (bind) app port port port port port TCP lub UDP payload port

Uniform Resource Locator Pozwala na lokalizację zasobów (np. plików, baz danych, komend, etc…) w Internecie URL reprezentowany przez klasę URL w pakcie java.net URL składa się z dwóch elementów: Identyfikatora protokołu Nazwy zasobów Tworzenie URL: URL ul = new URL("http://www.ul.lodz.pl/"); Tworzenie URL z uwzględnieniem kodowania znaków specjalnych: URI uri = new URI("http", "foo.com", "/hello world/", ""); Metody do parsowania URL: getProtocol, getAuthority, getHost, getPort, getPath, getQuery, getFile, getRef Otwieranie strumienia na URL: metoda OpenStream, która zwraca java.io.InputStreamobject Połączenie z zasobami z wykorzystaniem określonego protokołu dla URL: metoda openConnection zwraca URLConnection, możliwość zrzutowania na konkretny protokół java.net.HttpURLConnection

Przykład 1. Aplikacja wyświetlająca zawartość strony na standardowe wyjście. import java.net.*; import java.io.*; public class URLReader { public static void main(String[] args) throws Exception { URL yahoo = new URL("http://www.yahoo.com/"); BufferedReader in = new BufferedReader( new InputStreamReader( yahoo.openStream())); String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close(); } Źródło: http://java.sun.com/docs/books/tutorial/networking/urls/readingURL.html

Przykład 2. Aplikacja wyświetlająca zawartość strony na standardowe wyjście. Otwieranie połączenia dla określonego protokołu. import java.net.*; import java.io.*; public class URLConnectionReader { public static void main(String[] args) throws Exception { URL yahoo = new URL("http://www.yahoo.com/"); URLConnection yc = yahoo.openConnection(); BufferedReader in = new BufferedReader( new InputStreamReader( yc.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close(); } Źródło: http://java.sun.com/docs/books/tutorial/networking/urls/readingURL.html

Pisanie pod wskazany URL Kroki wymagane do stworzenia klienta piszącego pod wskazany URL utworzenie URL pobranie obiektu URLConnection ustawienie właściwości pisania do strumienia otwarcie połączenia do zasobów pobranie strumienia wyjściowego z obiektu połączenie zapis do strumienia wyjściowego zamknięcie strumienia wyjściowego

Przykład 3. Aplikacja pozwalająca na zapis do strumienia wyjściowego. import java.io.*; import java.net.*; public class Reverse { public static void main(String[] args) throws Exception { ... (1) URL url = new URL(args[0]); (2) URLConnection connection = url.openConnection(); (3) connection.setDoOutput(true); (4) OutputStreamWriter out = new OutputStreamWriter( connection.getOutputStream()); (5) out.write("string=" + stringToReverse); out.close(); } Źródło: http://java.sun.com/docs/books/tutorial/networking/urls/readingURL.html

InetAddress Klasa reprezentuje 32 bitowy lub 128 bitowy adres IP na protokole transportowym UDP lub TCP Złożony jest z adresu IP oraz nazwy hosta Dwa typy adresów: multicast i unicast Metody: (static) getLocalHost() – zwraca obiekt klasy InetAddres opisujący lokalny komputer String getHostAddress() – zwraca adres w postaci XXX.XXX.XXX.XXX String getHostName() – zwraca adres w postaci maszyna.domena1.domena2 … Metody pomocnicze postaci: is???(), np. isMulticastAddress()

Architektura zcentralizowana

Architektura Klient-Serwer Architektura rozproszona Serwer „Gruby” klient Logika usługowa Skalowalność aplikacji Dostępność Rozszerzalność (extensibility) aplikacji Zdolność do używania obcych zasobów (resource load) Bezpieczeństwo Problemy modeli innych niż zcentralizowany: Dodatkowa złożoność aplikacji Wiele punktów, w których mogą wystąpić błędy Ograniczenia związane z przepustowością łączy komunikacyjnych Baza danych

Architektura Klient-Serwer Port, na którym klient nasłuchuje Przywiązanie klienta do konkretnego portu Serwer Klient nazwa hosta serwera numer portu serwera, na którym nasłuchuje Porty Porty ServerSocekt Socekt Nasłuchiwanie Przepięcie klienta na nowy port, w celu zwolnienia portu do nasłuchiwania Serwer Klient Porty Porty Przydzielenie portu Gniazdo (socket): jest punktem końcowym wykorzystywanym do zestawiania dwukierunkowego połączenia pomiędzy działającymi aplikacjami w sieci. Gniazdo jest przywiązane do wybranego portu, tak że warstwa TCP może identyfikować aplikację, do której powinny zostać dostarczone dane.

Architektura wielowarstwowa Zalety architektury rozproszonej: Skalowalność aplikacji Dostępność Rozszerzalność aplikacji Bezpieczeństwo Wady architektury rozproszonej: Dodatkowa złożoność aplikacji Potencjalnie wiele miejsc, w których mogą wystąpić błędy Ograniczenia związane z przepustowością łączy komunikacyjnych Warstwa pośrednicząca Warstwa pośrednicząca Cienki klient Logika usługowa Logika usługowa Logika usługowa Baza danych Usługi

Przykład architektury wielowarstwowej

Czytanie i zapis z gniazda Klient Serwer Utwórz gniazdo. Wymagana nazwa maszyny oraz numer portu. Pobierz strumień wejściowy i wyjściowy: PrintWriter i BufferedReader Czytaj linie po linii z BufferedReader i pisz do PrintWriter Zamknij strumienie Zamknij połączenie Utwórz gniazdo ServerSocekt na określonym porcie Zadeklaruj zamienną typu ClientSocket Użyj metody accept w celu odebrania i ustanowienia przychodzącego połączenia (utwórz wątek do obsługi odebranego połączenia) Pobierz strumień do pisania i czytania (PrintWriter i BufferedReader) Pisz i czytaj ze strumieni. Zamknij strumienie Zamknij połączenia Metoda accpet zwraca gniazdo, które ma przypisany zdalny port i adres IP.

Protokół Opisuje sposób komunikacji pomiędzy klientem i serwerem. Przeważnie realizowane jako automat W przypadku protokołu tekstowego można wykorzystać tokenizer Tokenizer: utworzyć tokenizer z początkowego ciągu znaków odbieranie kolejnych części ciągu znaków (tokenów) za pomocą nextToken liczba tokenów pozostałych do odebrania: countTokens

Przykład ‘Tokenzier’ public class TokenizerTest { public static void main(String[] args) { if (args.length == 1) { String input = args[0], delimiters = „;”; StringTokenizer token = new StringTokenizer(input, delimiters); while (token.hasMoreTokens()) { System.out.println(token.nextToken()); } }else { System.out.println("Podaj ciag znakow„);

Przykład Aplikacja Serwer: KnockKnockServer Aplikacja Klient: KnockKnockClient Protokół: KnockKnockProtocol

Transport UDP Datagram – jest to pojedyncza, niezależna wiadomość przesyłana w sieci, której czas dostarczenia, poprawność nie są gwarantowane Istnieje możliwość komunikacji multicast Java do obsługi Transportu UDP oferuje klasy: DatagramSocket, DatagramPacket, MulticastSocket - nie istnieje coś takiego jak kanał -

Aplikacja Klient-Server dla UDP Kroki przy pisaniu aplikacji klienta utworzenie gniazda typu DatagramSocket (nie wymagany port) utworzenie pakietu DatagramPacket pobranie adresu maszyny (InetAddress.getByName()) wysłanie pakietu metoda send Odebranie pakietu od serwera metoda receive Pobranie zawartości pakietu za pomocą metody getData Kroki przy pisaniu aplikacji serwera Utworzenie gniazda DatagramSocket Odebranie pakietu metodą receive Pobranie adresu i portu na który ma być wysłana wiadomość Przygotowanie DatagramPacekt do wysłania Wysłanie DatagramPacket metodą send Zamknięcie gniazda

Przykład QuoteServerThread QuoteServer QuoteClient

MultiCast Specjalny typ gniazda umożliwiający nasłuch na transmisję realizowaną przez serwer do wielu klientów tzw. broadcast Klient nie inicjuje transmisji, tylko nasłuchuje. Serwer wysyła pakiety w określonych interwałach DatagramPacket konstruowany jest z wykorzystaniem InetAddress oraz numeru portu. Klient do nasłuchiwania korzysta z MulticastSocket, dołączając się za pomocą metody join(grupa), do grupy odbiorców Grupa odbiorców jest to adres, na którym realizowana jest transmisja multicast