KOMUNIKACJA MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA

Podobne dokumenty
K O M U N I K A C J A MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA

Programowanie współbieżne i rozproszone

Strumienie i serializacja

Platformy Programistyczne Zagadnienia sieciowe i wątki

Biblioteki wejścia/wyjścia. Strumienie we/wy (I/O)

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5.

Wykład 4: Wejście/wyjście: strumienie Java

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

Kurs programowania. Wykład 10. Wojciech Macyna. 05 maja 2016

Adresy URL. Zaawansowane technologie Javy 2019

Przykłady interfejsu TCP i UDP w Javie

STRUMIENIE TEKSTOWE WEJŚCIOWE WPROWADZANIE DANYCH STRUMIENIE BAJTOWE, STRUMIENIE TEKSTOWE

Programowanie rozproszone w języku Java

Komunikacja z użyciem gniazd aplikacje klient-serwer

Networking. Zaawansowane technologie Javy 2019

Wybrane działy Informatyki Stosowanej

Inynieria oprogramowania Lecture XXX. Java TM cz IV: IO. Bartosz Walter

Strumienie, pliki. Sortowanie. Wyjątki.

Gniazda komunikacji sieciowej w środowisku Java

Java niezbędnik programisty spotkanie nr 11. Importy statyczne, wejście/wyjście, wyrażenia regularne, serializacja

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Język JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie w języku Java

Podstawy otwartych języków programowania Wyjątki i strumienie I/O

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

MODEL WARSTWOWY PROTOKOŁY TCP/IP

dr Krzysztof Podlaski

Wstęp do Java. Operacje Wejścia-Wyjścia Programowanie Wielowątkowe. dr Krzysztof Podlaski. Wydział Fizyki i Informatyki Stosowanej

Obiekty sieciowe - gniazda Komputery w sieci Internet komunikują się ze sobą poprzez:

Strumienie, pliki. Sortowanie. Wyjątki.

Zadanie 2: transakcyjny protokół SKJ (2015)

JAVA I SIECI. MATERIAŁY:

Programowanie Sieciowe 1

Bezpieczne uruchamianie apletów wg

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

1 Klasa File. 2 Writer. Programowanie w j zyku Java - Adam Krechowicz. Klasa File zapewnia podstawowe operacje na plikach

Stos protokołów TCP/IP (ang. Transmission Control Protocol/Internet Protocol)

URL. Budowa URL (ang. Uniform Resource Locator): working#downloading

Programowanie obiektowe

Rozdział 7 Strumienie, operacje wejścia-wyjścia

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Wykład 10: Wejście i Wyjście

Java programowanie sieciowe

Java programowanie w sieci. java.net RMI

Programowanie sieciowe

Wykład 4: Protokoły TCP/UDP i usługi sieciowe. A. Kisiel,Protokoły TCP/UDP i usługi sieciowe

1. Model klient-serwer

Dr Michał Tanaś(

Model sieci OSI, protokoły sieciowe, adresy IP

Klient-Serwer Komunikacja przy pomocy gniazd

Programowanie obiektowe

Podstawy Transmisji Danych. Wykład IV. Protokół IPV4. Sieci WAN to połączenia pomiędzy sieciami LAN

Programowanie w języku Java WYKŁAD

Przesyłania danych przez protokół TCP/IP

Java. Michał Wójcik.

Protokoły sieciowe - TCP/IP

Java a dost p do Internetu.

Sieci komputerowe. Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP

5. Model komunikujących się procesów, komunikaty

Programowanie aplikacji w architekturze Klient-Serwer - UDP

Wykład 2. Strumienie tekstowe (wprowadzanie danych z klawiatury) i bajtowe, otwieranie strumieni poprzez sieć - obiekty URL

Programowanie Obiektowe (Java)

Aplikacja wielowątkowa prosty komunikator

Podstawy i języki programowania

Języki i metody programowania Java INF302W Wykład 4

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Programowanie obiektowe

TRX API opis funkcji interfejsu

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Przygotował: Jacek Sroka 1. Java SE. Strumienie

Sieci komputerowe Warstwa transportowa

Programowanie obiektowe

Strumienie tekstowe (wprowadzanie danych z klawiatury) i bajtowe, otwieranie strumieni przez sieć - obiekty URL

Sieci komputerowe - Protokoły warstwy transportowej

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ ADRESACJA W SIECIACH IP. WSTĘP DO SIECI INTERNET Kraków, dn. 24 października 2016r.

Biblioteka standardowa - operacje wejścia/wyjścia

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Podstawowe pojł cia. Czego sił nauczymy? Pojł cia hosta. Hosty Adresowanie Internetowe Porty Protokoóy

Ćwiczenie 2. Obsługa gniazd w C#. Budowa aplikacji typu klient-serwer z wykorzystaniem UDP.

Bazy Danych i Usługi Sieciowe

Podstawowe protokoły transportowe stosowane w sieciach IP cz.1

Sieci Komputerowe Modele warstwowe sieci

Dr Michał Tanaś(

Unicast jeden nadawca i jeden odbiorca Broadcast jeden nadawca przesyła do wszystkich Multicast jeden nadawca i wielu (podzbiór wszystkich) odbiorców

Wykład 6 Dziedziczenie cd., pliki

Łukasz Przywarty Wrocław, r. Grupa: WT/N 11:15-14:00. Sprawozdanie z zajęć laboratoryjnych: OpenSSL - API

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

MODEL OSI A INTERNET

akademia androida Składowanie danych część VI

Programowanie sieciowe

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja

ARP Address Resolution Protocol (RFC 826)

Gniazda BSD implementacja w C#

Wykład 7 Tworzenie łącz w apletach, wątki, serializacja obiektów, gniazda

PROTOKOŁY WARSTWY TRANSPORTOWEJ

Adres IP

Adresy w sieciach komputerowych

POŁĄCZENIE STEROWNIKÓW ASTRAADA ONE MIĘDZY SOBĄ Z WYKORZYSTANIEM PROTOKOŁU UDP. Sterowniki Astraada One wymieniają między sobą dane po UDP

Mechanizmy pracy równoległej. Jarosław Kuchta

Zestaw ten opiera się na pakietach co oznacza, że dane podczas wysyłania są dzielone na niewielkie porcje. Wojciech Śleziak

Transkrypt:

Wykorzystano fragmenty wykładów M. Piotrowskiego i M. Wójcika KOMUNIKACJA MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA Waldemar Korłub Platformy Technologiczne KASK ETI Politechnika Gdańska

Komunikacja międzyprocesowa 2 Podstawowe metody wymiany informacji między aplikacjami/procesami obejmują: Pliki Potoki nienazwane (ang. pipe) n np. połączone z stdin/stdout/stderr Gniazda (ang. sockets) n Oraz protokoły budowane na ich podstawie, np. HTTP Java oferuje zunifikowany model strumieni wejścia/wejścia do obsługi wielu źródeł danych ang. I/O streams nie mylić z API Stream

Strumienie wejścia/wyjścia 3 Strumienie bajtowe (ang. Byte Streams) odczyt/zapis bajtów InputStream n np. FileInputStream, AudioInputStream OutputStream n np. FileOutputStream, ByteArrayOutputStream Strumienie znakowe (ang. Character Streams) odczyt/zapis znaków Reader n np. FileReader, InputStreamReader Writer Strumienie należy zamykać (metoda close()) po zakończeniu pracy

Strumienie znakowe 4 Wykorzystują zestaw znaków Unicode do przechowywania znaków Automatyczna translacja znaków pomiędzy Unicode a lokalnym zbiorem znaków

Buforowanie 5 Poprawia wydajność komunikacji za pośrednictwem strumieni wejścia/wyjścia Redukcja liczby odwołań do pliku na dysku/gniazda sieciowego Byte Streams BufferedInputStream BufferedOutputStream Character Streams BufferedReader BufferedWriter Dekoratory dla podstawowych strumieni bajtowych i znakowych Metoda flush() wymusza zapisanie zawartości bufora

Dekorowanie strumieni 6 Podstawowy strumień: InputStream input = /*...*/; Z buforowaniem: BufferedInputStream buffered = new BufferedInputStream(input); Z buforowaniem i dekompresją: GZIPInputStream gzipstream = new GZIPInputStream(buffered); Z deserializacją obiektów: ObjectInputStream objectstream = new ObjectInputStream(gzipStream);

Strumień serializowanych obiektów 7 Java umożliwia binarną serializację obiektów W celu ich zapisu do pliku na dysku W celu ich przesłania przez sieć do innej aplikacji Binarna serializacja daje większą wydajność niż w przypadku użycia formatów tekstowych takich, jak JSON/XML/YAML ale wymaga Javy po stronie zapisującej oraz po stronie odczytującej

Serializacja 8 Klasy możliwe do zserializowania oznacza się interfejsem Serializable Interfejs znakujący nie posiada żadnych metod Wybrane pola klasy można pominąć w czasie serializacji modyfikator transient Różne wersje klasy można oznaczyć identyfikatorami: static final long serialversionuid = 17;

Serializacja strumienie obiektów 9 ObjectInputStream: String name = objectin.readutf(); int age = objectin.readint(); Developer dev = (Developer) objectin.readobject(); ObjectOutputStream: objectout.writeutf("imiesław"); objectout.writeint(20); Serializable dev = new Developer(); objectout.writeobject(dev);

Standardowe strumienie 10 stdin: System.in (InputStream) stdout: System.out (PrintStream) stderr: System.err (PrintStream)

11 Pliki i katalogi

Klasa File 12 Przed Javą SE7 podstawowa klasa do operacji na drzewie plików i katalogów Obiekty klasy File reprezentują zarówno pliki jak i katalogi W duchu UNIXowej idei: wszystko jest plikiem Udostępnia podstawowe informacje na temat elementów na dysku

Klasa File 13 Pozyskanie instancji: String path = "..."; File file = new File(path); Sprawdzenie typu: boolean isdirectory = file.isdirectory(); boolean isfile = file.isfile(); Czas modyfikacji: long lastmodifiedms = file.lastmodified(); Date lastmodified = new Date(lastModifiedMS); Zawartość katalogu (jeśli jest katalogiem, w przeciwnym razie null): File[] files = file.listfiles();

Wady klasy File 14 Wiele metod nie rzuca wyjątku w razie niepowodzenia np. boolean File.delete() Problemy z przenośnością metody rename() Brak obsługi dowiązań symbolicznych Ograniczony dostęp do metadanych np. właściciel pliku Problemy ze skalowalnością np. listowanie zawartości katalogu o dużej liczbie elementów

java.nio.files.* Path oraz Files 15 Nowe klasy narzędziowe wprowadzone w SE7 Rozwiązują problemy występujące w klasie File Path i Files zalecane do użycia w nowych projektach Path Reprezentuje lokalizację pliku/katalogu na dysku n Z uwzględnieniem specyfiki systemu operacyjnego Paths.get("katalog", "plik.txt"); Implementuje interfejs Watchable n Możliwość nasłuchiwania na zmiany, np. dodanie pliku w katalogu, usunięcie pliku, modyfikacja pliku Files Klasa narzędziowa oferująca metody statyczne do operacji na obiektach Path

Path i Files 16 Pozyskanie instancji: Path p = Paths.get("katalog", "plik.txt"); Sprawdzenie typu: boolean isdirectory = Files.isDirectory(p); boolean isfile = Files.isRegularFile(p); Zawartość katalogu: Stream<Path> paths = Files.list(p); Odroczone ładowanie (ang. lazily populated) rozwiązuje problem wydajności listowania dużych katalogów Usuwanie: Files.delete(p); Wyrzuca IOException w razie niepowodzenia

try-with-resources 17 Dysponując obiektem File/Path można otworzyć strumienie do wczytywania i zapisywania plików Strumienie należy zamykać po zakończeniu pracy z nimi W przeciwnym razie pozostaje wiszący uchwyt pliku/wiszące połączenie socketowe itd. Składnia try-with-resources umożliwia automatyczne zamykanie strumieni i innych zasobów Muszą implementować interfejs AutoCloseable

try-with-resources 18 Automatyczne zamykanie strumienia: try (BufferedReader reader = Files.newBufferedReader(path)) { String line = reader.readline(); //...przetwarzanie... } //automatyczne zamknięcie strumienia

19 Gniazda

Gniazdo (ang. socket) 20 Punkt końcowy w dwukierunkowej komunikacji pomiędzy dwoma programami działającymi w sieci (lub na lokalnym komputerze) Powiązane z konkretnym portem (1-65535) Serwer nasłuchuj na połączenia od klientów na określonym porcie Aplikacje klienckie łącząc się z serwerem specyfikują port Na jednym komputerze wiele aplikacji może równocześnie nasłuchiwać na różnych portach

Połączenia 21 TCP Transmission Control Protocol Wiarygodny Połączeniowy Retransmisje Zachowana kolejność Potwierdzenia UDP User Datagram Protocol Niewiarygodny Bezpołączeniowy Brak retransmisji Kolejność niezapewniona Brak potwierdzeń

Połączenia 22 Klasy umożliwiające połączenia: TCP (Transmission Control Protocol): n URL n URLConnection n Socket n ServerSocket UDP (User Datagram Protocol): n DatagramPacket n DatagramSocket n MulticastSocket

Połączenie 23 Serwer Nasłuchiwanie na wybranym porcie: new ServerSocket(int port) Akceptowanie połączenia z klientem (metoda blokująca): Socket ServerSocket.accept() Klient Połączenie z wybranym hostem na określonym porcie: new Socket(String host, int port) Obie strony OutputStream Socket.getOutputStream() InputStream Socket.getInputStream()

try-with-resources 24 Automatyczne zamykanie strumieni: Socket socket = new Socket("192.168.1.17", 1337); try (BufferedReader reader = Files.newBufferedReader(path); OutputStream output = socket.getoutputstream()) { String line = reader.readline(); //...przetwarzanie... output.write(/*...*/); } //automatyczne zamknięcie obu strumieni

Datagramy UDP 25 Niezależne, samodzielne wiadomości przesyłane przez sieć Brak gwarancji co do faktu dostarczenia, czasu dostarczenia czy integralności treści Główne klasy: DatagramSocket gniazdo datagramowe DatagramPacket pojedynczy pakiet MulticastSocket odbieranie pakietów wysłanych do grupy hostów InetAdress reprezentacja adresu protokołu IP

Przesyłanie datagramu 26 Serwer: Rozpoczęcie nasłuchiwania na określonym porcie: new DatagramSocket(int port) Odbieranie pakietu (blokujące): void DatagramSocket.receive(DatagramPacket p) Klient: Pozyskanie instancji gniazda: new DatagramSocket(); n Nie wymaga adresu hosta ani portu adres w datagramie Konstrukcja pakietu datagramowego: new DatagramPacket(byte[] buff, int lenght, InetAddress address, int port), Wysyłanie pakietu: void DatagramSocket.send(DatagramPacket packet)

Multicast 27 Nadawca: Wysyłanie za pomocą DatagramSocket Konstrukcja adresu multicast (w zależności od maski podsieci): InetAddress.getByName("192.168.0.63") Odbiorcy: Rozpoczęcie nasłuchiwania na określonym porcie: MulticastSocket(int port) Dołączenie do grupy multicast: MulticastSocket.joinGroup(InetAddress group) n Host może być podłączony do kilku sieci Opuszczenie grupy: MulticastSocket.leaveGroup(InteAddress group) Odebranie pakietu: void MulticastSocket.receive(DatagramPacket p)

28 Pytania?