Platformy Programistyczne Zagadnienia sieciowe i wątki

Podobne dokumenty
Programowanie współbieżne i rozproszone

Aplikacja wielowątkowa prosty komunikator

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

Aplikacja wielow tkowa prosty komunikator

JAVA I SIECI. MATERIAŁY:

Programowanie rozproszone w języku Java

Wybrane działy Informatyki Stosowanej

Strumienie i serializacja

Komunikacja z użyciem gniazd aplikacje klient-serwer

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

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

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

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

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

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

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

Przykłady interfejsu TCP i UDP w Javie

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Adresy URL. Zaawansowane technologie Javy 2019

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

Java programowanie sieciowe

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

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

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Współbieżność w środowisku Java

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Networking. Zaawansowane technologie Javy 2019

Programowanie obiektowe

Architektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie obiektowe

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

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

Dokumentacja techniczna

Komunikator internetowy w C#

Java. Programowanie Obiektowe Mateusz Cicheński

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

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

Komunikatory typu TCP/IP lab2. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Java programowanie w sieci. java.net RMI

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

Programowanie w języku Java

Aplikacja Sieciowa wątki po stronie klienta

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Aplikacje RMI

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie współbieżne Laboratorium nr 11

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);

Programowanie obiektowe zastosowanie języka Java SE

Wątki w Javie. Piotr Tokarski

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Michał Jankowski. Remoting w.net 2.0

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

Serwer współbieżny połączeniowy

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

sieć 4) Mechanizm RMI jest zazwyczaj wykorzystywany w rozwiązaniach typu klient-serwer.

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017

Programowanie obiektowe

dr Krzysztof Podlaski

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

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

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

Programowanie sieciowe

Remote Method Invocation 17 listopada 2010

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

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Wywoływanie metod zdalnych

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

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

Podejście obiektowe do budowy systemów rozproszonych

Wykład 2: Podstawy Języka

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

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

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

Język Java część 2 (przykładowa aplikacja)

Java a dost p do Internetu.

Aplikacje RMI Lab4

1 Atrybuty i metody klasowe

Wykład 6 Dziedziczenie cd., pliki

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

Wątki w Android OS. Matt Rutkowski. GynSoft sp. z o.o. matt@gynsoft.net

12. Wirtualne sieci prywatne (VPN)

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Podstawy i języki programowania

Klient-Serwer Komunikacja przy pomocy gniazd

Wywoływanie metod zdalnych

Spis treści. 1 Java T M

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

WPROWADZENIE DO JĘZYKA JAVA

Wszystkie parametry pracy serwera konfigurujemy w poszczególnych zakładkach aplikacji, podzielonych wg zakresu funkcjonalnego.

1. Co można powiedzieć o poniższym kodzie? public class A { void m(int a) { } int m(string s) { return Integer.parseInt(s); }

Dokonaj instalacji IIS opublikuj stronę internetową z pierwszych zajęć. Ukaże się kreator konfigurowania serwera i klikamy przycisk Dalej-->.

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

Podstawowe typy serwerów

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Transkrypt:

Platformy Programistyczne Zagadnienia sieciowe i wątki Agata Migalska 27/28 maja 2014

Komunikacja sieciowa 1 Komunikacja sieciowa 2 Wiele wątków 3 Serializacja

Architektura typu klient-serwer

Architektura typu klient-serwer Klient Klient musi wiedzieć o istnieniu serwera Serwer Serwer musi wiedzieć o istnieniu wszystkich klientów

Nawiązanie połączenia z serwerem

Nawiązanie połączenia z serwerem 1 Klient nawiązuje połączenie z serwerem 2 Serwer tworzy połączenie i dodaje klienta do listy zarejestrowanych klientów 3 Kolejny klient nawiązuje połaczenie

Komunikacja pomiędzy klientami a serwerem

Komunikacja pomiędzy klientami a serwerem 4 Klient A wysyła wiadomość do serwera, że kładzie na stole niebieską kartę o wartości 5 5 Serwer rozsyła nowy stan stołu do wszystkich klientów (w tym do klienta A)

Nawiązanie połaczenia sieciowego Socket gniazdo = new Socket(" 127001", 4000); Gniazdo to obiekt klasyjavanetsocket, który reprezentuje połaczenie sieciowe pomiędzy dwoma komputerami Klient musi wiedzieć o serwerze dwie rzeczy - kim jest (adres IP) oraz na jakim porcie działa (nr portu TCP) Porty 0-1023 są zarezerowane dla powszechnie używanych usług (HTTP - 80, FTP - 20, SMTP - 25, HTTPS - 443, etc) Tworząc własne programy serwerów korzystaj z portów od 1024 do 65 535

Odczytywanie danych z gniazda 1 Nawiąż połączenie sieciowe z serwerem, tworząc gniazdo Socket socket = new Socket( HOST, PORT); 2 Utwórz obiekt InputStreamReader połączony z wejściowym strumieniem InputStream is = socket getinputstream (); InputStreamReader isr = new InputStreamReader( is); 3 Utwórz strumień BufferedReader i odczytaj dane BufferedReader reader = new BufferedReader( isr); String msg = reader readline();

Zapisywanie danych w gnieździe 1 Utwórz gniazdo reprezentujące połączenie z serwerem Socket socket = new Socket( HOST, PORT); 2 Utwórz strumień PrintWriter połączone ze strumieniem wyjściowym gniazda OutputStream os = socket getoutputstream (); PrintWriter writer = new PrintWriter( os); 3 Zapisz coś writer print(" wiadomosc");

Tworzenie prostego serwera 1 Aplikacja serwera tworzy gniazdo ServerSocket na określonym porcie ServerSocket serversocket = new ServerSocket( PORT); 2 Klient tworzy połączenie z aplikacją serwera Socket socket = new Socket( HOST, PORT); 3 Serwer tworzy nowe gniazdo do komunikacji z klientem Socket socket = serversocket accept();

Nowe Gadu Gadu

Wiele wątków 1 Komunikacja sieciowa 2 Wiele wątków 3 Serializacja

Wiele wątków Wątek 1 niezależny wątek realizacji czyli niezależny stos wywołań 2 obiekt klasy javalangthread reprezentujący niezależny wątek realizacji

Konsekwencje wielu wątków 1 Wirtualna maszyna Javy wywołuje metodę main() public static void main( String[] args){ } 2 Metoda main() uruchamia nowy wątek Realizacja wątku głównego jest chwilowo wstrzymywana, a rozpoczyna się wykonanie nowego wątku Runnable r = new ZadanieWatku (); Thread t = new Thread(r); tstart(); Nowy wątek jest uruchamiany i staje się wątkiem aktywnym 3 JVM wykonuje na przemian wszystkie wątki aż zostaną zakończone

Jak stworzyć i uruchomić nowy wątek 1 Stwórz obiekt Runnable (zadanie realizowane w wątku) Runnable zadanie = new ZadanieWatku (); 2 Utwórz obiekt Thread (pracownik) i przekaż do niego obiekt zadania Thread watek = new Thread( zadanie); 3 Uruchom wątek watekstart(); 4 Wywołanie metody start() wątku powoduje storzenie nowego stosu wywołań z metodą run() zadania na spodzie

Stany wątków

Typowa pętla działania wątku

Serializacja 1 Komunikacja sieciowa 2 Wiele wątków 3 Serializacja

Zamrażanie obiektów Serializacja Serializacją to obiektowy sposób zapisania stanu obiektu Obiekt można zserializować, jeżeli implementuje on interfejs Serializable oraz wszystkie zależne od niego również implementują ten interfejs Zmienna egzemplarza serialversionuid : long jest markerem wersji klasy Dzięki serializacji możemy przesyłać obiekty strumieniami Deserializacj Odtworzenie obiektu na podstawie jego zamrożonej wersji

Odczytywanie obiektów z gniazda Socket socket = new Socket( HOST, PORT); InputStream is = socket getinputstream (); ObjectInputStream ois = new ObjectInputStream( is); Object object = ois readobject();

Zapisywanie obiektów w gnieździe Socket socket = new Socket( HOST, PORT); OutputStream os = socket getoutputstream (); ObjectOutputStream oos = new ObjectOutputStream( os); os writeobject( object);