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



Podobne dokumenty
MODEL WARSTWOWY PROTOKOŁY TCP/IP

Programowanie współbieżne i rozproszone

Aplikacja wielowątkowa prosty komunikator

Plan wykładu. 1. Sieć komputerowa 2. Rodzaje sieci 3. Topologie sieci 4. Karta sieciowa 5. Protokoły używane w sieciach LAN 6.

Protokoły sieciowe - TCP/IP

JAVA I SIECI. MATERIAŁY:

Przykłady interfejsu TCP i UDP w Javie

Adresy URL. Zaawansowane technologie Javy 2019

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

Aplikacja wielow tkowa prosty komunikator

Komunikacja z użyciem gniazd aplikacje klient-serwer

Programowanie w języku Java

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

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

Model warstwowy Warstwa fizyczna Warstwa łacza danych Warstwa sieciowa Warstwa transportowa Warstwa aplikacj. Protokoły sieciowe

Java programowanie w sieci. java.net RMI

Programowanie rozproszone w języku Java

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

Platformy Programistyczne Zagadnienia sieciowe i wątki

Model sieci OSI, protokoły sieciowe, adresy IP

Bazy Danych i Usługi Sieciowe

Dr Michał Tanaś(

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

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

Java programowanie sieciowe

Sieci komputerowe i bazy danych

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

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

Routing i protokoły routingu

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

Programowanie aplikacji w architekturze Klient-Serwer - UDP

Sieci komputerowe - administracja

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

Java a dost p do Internetu.

Opis efektów kształcenia dla modułu zajęć

Technologie cyfrowe semestr letni 2018/2019

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

Adres IP

Sieci komputerowe. Wstęp

Programowanie sieciowe

Protokół sieciowy Protokół

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

Wykład 2: Budowanie sieci lokalnych. A. Kisiel, Budowanie sieci lokalnych

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

Zarządzanie systemami informatycznymi. Protokoły warstw aplikacji i sieci TCP/IP

Zadanie 2: transakcyjny protokół SKJ (2015)

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

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

Sieci komputerowe Warstwa transportowa

Sieci komputerowe - Protokoły wspierające IPv4

Przesyłania danych przez protokół TCP/IP

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

Programowanie sieciowe

Wywoływanie metod zdalnych

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 14 Protokoły sieciowe

ZiMSK. Charakterystyka urządzeń sieciowych: Switch, Router, Firewall (v.2012) 1

Podstawy i języki programowania

Zarządzanie systemami informatycznymi. Protokoły warstw aplikacji i sieci TCP/IP

Sieci Komputerowe. Model Referencyjny dla Systemów Otwartych Reference Model for Open Systems Interconnection

Wywoływanie metod zdalnych

Zaawansowane aplikacje WWW - laboratorium

Studium przypadku Case Study CCNA2-ROUTING. Warianty projektów

Podstawy sieci komputerowych

Podstawowe typy serwerów

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

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

PROTOKOŁY WARSTWY TRANSPORTOWEJ

Sieci komputerowe - Protokoły warstwy transportowej

Adresy w sieciach komputerowych

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

Akademia Techniczno-Humanistyczna w Bielsku-Białej

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

Stos TCP/IP Warstwa transportowa Warstwa aplikacji cz.1

Serwer współbieżny połączeniowy

1. FTP 2. SMTP 3. POP3

Architektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1

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ć

Wybrane działy Informatyki Stosowanej

Lab5 - Badanie protokołów pocztowych

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

Networking. Zaawansowane technologie Javy 2019

RUTERY. Dr inŝ. Małgorzata Langer

Routing - wstęp... 2 Routing statyczny... 3 Konfiguracja routingu statycznego IPv Konfiguracja routingu statycznego IPv6...

Remote Method Invocation 17 listopada 2010

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

Zarządzanie ruchem w sieci IP. Komunikat ICMP. Internet Control Message Protocol DSRG DSRG. DSRG Warstwa sieciowa DSRG. Protokół sterujący

Tworzenie i wykorzystanie usług

Podejście obiektowe do budowy systemów rozproszonych

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Sieci komputerowe. Wykład dr inż. Łukasz Graczykowski

Java wybrane technologie

TCP/IP. Warstwa aplikacji. mgr inż. Krzysztof Szałajko

Architektura INTERNET

MODEL OSI A INTERNET

Dr Michał Tanaś(

Sieci Komputerowe. Wykład 1: TCP/IP i adresowanie w sieci Internet

Akademia Techniczno-Humanistyczna w Bielsku-Białej

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

Programowanie Sieciowe 1

Transkrypt:

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

Schemat Internetu R R R R R R R 2

Model Internetu 3

Protokoły komunikacyjne stosowane w sieci Internet Protokoły warstwy dostępu do sieci, Protokoły warstwy intersieci, Protokoły warstwy transmisji, Protokoły warstwy zastosowań (aplikacji). 4

Protokoły warstwy dostępu do sieci Protokoły warstwy dostępu do sieci - określają zasady przesyłania danych w obrębie jednej sieci lokalnej: protokoły sieci lokalnych (np. protokoły komunikacyjne sieci Ethernet, Token Ring, FDDI). 5

Protokoły warstwy intersieci Protokoły warstwy intersieci (odpowiedzialne za realizację funkcji warstwy intersieciowej): Protokół intersieciowy (protokół IP - Internet Protocol) - definiuje sposób adresowania komputerów przyłączonych do sieci Internet oraz odpowiada za wyznaczenie tras, po których przesyłane będą pakiety, Protokoły routingu - pozwalają na wymianę informacji pomiędzy routerami umoŝliwiającą im zebranie informacji niezbędnych do realizacji zadania doboru trasy, czyli rozwiązywania problemu routingu (RIP /Routing Information Protocol/, OSPF /Open Shortest Path First/, BGP /Border Gateway Protocol/), Protokół ICMP /Internet Control Message Protocol)/ protokół diagnostyczny słuŝący do informowania o problemach związanych z funkcjonowaniem sieci, Protokoły ARP /Address Resolution Protocol/ i RARP /Reverse Address Resolution Protocol/ protokoły odwzorowania adresów (dokonują translacji pomiędzy adresami stosowanymi w warstwie międzysieciowej i dostępu do sieci), Protokół dynamicznego konfigurowania węzłów protokół DHCP (Dynamic Host Configuration Protocol) pozwala na automatyczną konfigurację komputera przyłączonego do sieci Internet. 6

Protokoły warstwy transmisji Protokoły warstwy transmisji (odpowiedzialny za dostarczenie danych od nadawcy do odbiorcy): Protokół sterowania transmisją (protokół TCP - Transmission Control Protocol) - dokonuje podziału danych na segmenty i sprawdza poprawność ich transmisji; Protokół datagramów uŝytkownika protokół UDP (User Datagram Protocol) dokonuje podziału danych na datagramy i przesyła je bez weryfikacji poprawności transmisji. 7

Protokoły warstwy zastosowań Protokoły warstwy zastosowań (definiują usługi dostępne w sieci Internet): Protokół transferu hipertekstu (protokół HTTP - Hypertext Transfer Protocol) - pozwala na przesyłanie stron WWW; Protokół transferu plików (protokół FTP - File Transfer Protocol) - umoŝliwia kopiowanie plików pomiędzy komputerami przyłączonymi do sieci Internet; Protokół transferu poczty (protokół SMTP - Simple Mail Transfer Protocol) - określa zasady przesyłania listów poprzez Internet; Protokoły odbioru poczty (protokół POP - Post Office Protocol oraz IMAP Internet Message Access Protocol) - definiują sposób pobierania listów ze skrzynek pocztowych i zarządzania zawartością skrzynek; Protokół DNS (Domain Name System Protocol protokół obsługi systemu nazw domenowych) pozwala na konwersję nazwy domenowej komputera na identyfikujący go numer IP. 8

Identyfikacja komputera w sieci lasa java.net.inetaddress - reprezentuje adres IP komputera Tworzenie obiektu klasy InetAddress uwaga: klasa InetAddress nie posiada publicznych konstruktorów; tworzenie obiektów klasy InetAddress odbywa się za pomocą metod: public static InetAddress getbyname( String host) throws UnknownHostException; public static InetAddress[] getallbyname( String host) throws UnknownHostException; public static InetAddress getlocalhost() throws UnknownHostException; 9

Przykłady wywołań metod InetAddress adres = InetAddress.getByName( helion.com.pl ); InetAddress mojadres = InetAddress.getLocalHost(); 10

Przykładowy program import java.net.*; class MojAdres { public static void main (String [] args) { try { InetAddress adres = InetAddress.getByName("www.onet.pl"); System.out.println(adres); catch (UnknownHostException e) { System.out.println("Nie mogę znaleźć adresu komputera."); 11

Porty Port - identyfikator programu działającego w systemie komputerowym (numer portu jest liczbą szesnastobitową). Dobrze znane porty - identyfikatory przydzielone najpopularniejszym programom, np.: 23 - telnet 25 - SMTP 80 - HTTP 110 - POP3 20, 21 - FTP - dane (20), polecenia (21) 12

omunikacja omunikują się ze sobą programy, a nie komputery (w szczególnym przypadku komunikujące się programy mogą być uruchomione na tym samym komputerze). 13

omunikacja z poziomu programu połączenie widziane jest jako strumień: wysyłanie danych - zapis danych do strumienia, odbiór danych - pobieranie danych ze strumienia. gniazdo komunikacyjne (ang. Socket)- końcówka połączenia dostępna z poziomu programu. Strony uczestniczące w komunikacji: serwer - program oczekujący na połączenie ze strony klienta klient - program inicjujący połączenie. 14

omunikacja program A połączenie program B gniazdo gniazdo 15

Prosty klient import java.net.*; import java.io.*; public class Prostylient { public static void main(string [] args) { int bajt; BufferedReader klawiatura; String nowalinia = System.getProperty("line.separator"); 16

Prosty klient //utworzenie strumienia skojarzonego z klawiatura InputStreamReader klaw = new InputStreamReader(System.in); klawiatura = new BufferedReader(klaw); //nawiazanie polaczenia z serwerem try { Socket gniazdoomunikacyjne = new Socket("192.168.0.3",4444); // połączenie z programem działającym na komputerze o // podanym IP // i identyfikowanym przez numer portu // wyswietlenie informacji o numerach portow System.out.println("Server - port: " + gniazdoomunikacyjne.getport()); //numer zdalnego portu System.out.println("Server - localport: " + gniazdoomunikacyjne.getlocalport()); //numer lokalnego portu 17

Prosty klient //utworzenie strumienia tekstowego z danymi od serwera InputStream strumienodserwera = gniazdoomunikacyjne.getinputstream(); BufferedReader strumientekstowyodserwera = new BufferedReader(new InputStreamReader(strumienOdSerwera)); //utworzenie struienia tekstowego wysylajacego dane do serwera OutputStream strumiendoserwera = gniazdoomunikacyjne.getoutputstream(); BufferedWriter strumientekstowydoserwera = new BufferedWriter(new OutputStreamWriter(strumienDoSerwera)); //powitanie String powitanie = strumientekstowyodserwera.readline(); System.out.println(powitanie); 18

Prosty klient //wczytywanie danych z klawiatury i wysylanie do serwera while (true) { System.out.print("Tekst do wysłania: "); String s = klawiatura.readline(); strumientekstowydoserwera.write(s + nowalinia); strumientekstowydoserwera.flush(); //oczekiwanie na odpowiedz od serwera String odp = strumientekstowyodserwera.readline(); //wyswietlenie odpowiedzi System.out.println("SERWER: " + odp); if (s.tolowercase().startswith("koniec")) break; 19

Prosty klient strumientekstowydoserwera.close(); strumientekstowyodserwera.close(); klawiatura.close(); gniazdoomunikacyjne.close(); catch(unknownhostexception e1) { System.out.println("Nieznany host: " + e1.getmessage()); catch(ioexception e2) { System.out.println("Błąd operacji wejścia/wyjścia: " + e2.getmessage()); 20

Prosty serwer import java.net.*; import java.io.*; public class ProstySerwer { public static void main(string[] args) { String nowalinia = System.getProperty("line.separator"); //utworzenie gniazda nasłuchującego ServerSocket gniazdonasluchujace = null; try { gniazdonasluchujace = new ServerSocket(4444); catch (IOException e) { System.err.println("Serwer nie moze nasluchiwac na porcie: 4444."); System.exit(1); System.out.println("ServerSocket - localport: " + gniazdonasluchujace.getlocalport()); //numer lokalnego portu (4444) 21

Prosty serwer Socket gniazdoomunikacyjne = null; try { gniazdoomunikacyjne = gniazdonasluchujace.accept(); catch (IOException e) { System.err.println("Błąd połaczenia z klientem"); System.exit(1); System.out.println("Server - port: " + gniazdoomunikacyjne.getport()); //numer zdalnego portu System.out.println("Server - localport: " + gniazdoomunikacyjne.getlocalport()); //numer lokalnego portu 22

Prosty serwer try { //utworzenie strumienia tekstowego z danymi od klienta InputStream strumienodlienta = gniazdoomunikacyjne.getinputstream(); BufferedReader strumientekstowyodlienta = new BufferedReader(new InputStreamReader(strumienOdlienta)); //utworzenie strumienia tekstowego z danymi do klienta OutputStream strumiendolienta = gniazdoomunikacyjne.getoutputstream(); BufferedWriter strumientekstowydolienta = new BufferedWriter(new OutputStreamWriter(strumienDolienta)); strumientekstowydolienta.write("serwer wita klienta!" + nowalinia); strumientekstowydolienta.flush(); 23

Prosty serwer String pytanie, odpowiedz; while (true) { pytanie = strumientekstowyodlienta.readline(); if (pytanie.tolowercase().startswith("koniec")) { strumientekstowydolienta.write("oniec PRACY!!!" + nowalinia); break; odpowiedz = "ECHO: " + pytanie + nowalinia; strumientekstowydolienta.write(odpowiedz); strumientekstowydolienta.flush(); strumientekstowydolienta.close(); strumientekstowyodlienta.close(); gniazdoomunikacyjne.close(); gniazdonasluchujace.close(); catch(ioexception e) { System.out.println("Wyjątek wejscia/wyjscia"); 24

Serwer współbieŝny import java.net.*; import java.io.*; class ObslugaJednegolienta extends Thread { private Socket gniazdoomunikacyjne = null; String nowalinia = System.getProperty("line.separator"); ObslugaJednegolienta(Socket gniazdoomunikacyjne) { this.gniazdoomunikacyjne = gniazdoomunikacyjne; 25

Serwer współbieŝny public void run() { System.out.println("Przylaczenie nowego klienta"); System.out.println("Server - port: " + gniazdoomunikacyjne.getport()); //numer zdalnego portu System.out.println("Server - localport: " + gniazdoomunikacyjne.getlocalport()); //numer lokalnego portu try { //utworzenie strumienia tekstowego z danymi od klienta InputStream strumienodlienta = gniazdoomunikacyjne.getinputstream(); BufferedReader strumientekstowyodlienta = new BufferedReader( new InputStreamReader(strumienOdlienta)); 26

Serwer współbieŝny // utworzenie strumienia tekstowego // z danymi do klienta OutputStream strumiendolienta = gniazdoomunikacyjne.getoutputstream(); BufferedWriter strumientekstowydolienta = new BufferedWriter(new OutputStreamWriter(strumienDolienta)); strumientekstowydolienta.write("serwer wita klienta!" + nowalinia); strumientekstowydolienta.flush(); String pytanie, odpowiedz; 27

Serwer współbieŝny while (true) { pytanie = strumientekstowyodlienta.readline(); if (pytanie.tolowercase().startswith("koniec")) { strumientekstowydolienta.write ("ONIEC POLACZENIA Z LIENTEM" + nowalinia); break; 28

Serwer współbieŝny odpowiedz = "ECHO: " + pytanie + nowalinia; strumientekstowydolienta.write(odpowiedz); strumientekstowydolienta.flush(); strumientekstowydolienta.close(); strumientekstowyodlienta.close(); gniazdoomunikacyjne.close(); catch(ioexception e) { System.out.println("Wyjątek wejscia/wyjscia"); 29

Serwer współbieŝny public class SerwerWspolbiezny { public static void main(string[] args) throws IOException{ String nowalinia = System.getProperty("line.separator"); boolean serwerstop = false; //utworzenie gniazda nasłuchującego ServerSocket gniazdonasluchujace = null; try { gniazdonasluchujace = new ServerSocket(4444); catch (IOException e) { System.err.println("Serwer nie moze nasluchiwac na porcie: 4444."); System.exit(1); System.out.println("ServerSocket - localport: " + gniazdonasluchujace.getlocalport()); //numer lokalnego portu (4444) 30

Serwer współbieŝny while (!serwerstop) new ObslugaJednegolienta(gniazdoNasluchujace.accept()).start(); gniazdonasluchujace.close(); 31