Java a dost p do Internetu.

Podobne dokumenty
Adresy URL. Zaawansowane technologie Javy 2019

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

Programowanie współbieżne i rozproszone

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

Programowanie rozproszone w języku Java

Przykłady interfejsu TCP i UDP w Javie

Java programowanie sieciowe

Networking. Zaawansowane technologie Javy 2019

Programowanie w języku Java

Aplikacja wielow tkowa prosty komunikator

Gniazda komunikacji sieciowej w środowisku Java

Java programowanie w sieci. java.net RMI

Platformy Programistyczne Zagadnienia sieciowe i wątki

JAVA I SIECI. MATERIAŁY:

Aplikacja wielowątkowa prosty komunikator

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

Programowanie sieciowe

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

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

Komunikacja z użyciem gniazd aplikacje klient-serwer

Programowanie aplikacji w architekturze Klient-Serwer - UDP

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

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

Programowanie aplikacji w architekturze Klient-Serwer - TCP

Serwer współbieżny połączeniowy

Schemat dla UDP. = możliwe zablokowanie aplikacji KLIENT SERWER. s=socket(...) bind(s,...) recvfrom(s,...) sendto(s,...) recvfrom(s,...

Model OSI/ISO. Komputer B. Warstwy w modelu OSI aplikacji. aplikacji. prezentacji Komputer A. prezentacji. sesji. sesji. komunikacja wirtualna

MODEL WARSTWOWY PROTOKOŁY TCP/IP

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

Zaawansowany kurs języka Python

Gniazda BSD implementacja w C#

Systemy Rozproszone - Ćwiczenie 6

Interfejsy, klasy wewn trzne jako szczególny rodzaj obiektów

Zadanie 2: transakcyjny protokół SKJ (2015)

Dr Michał Tanaś(

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

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

Aplikacje bazodanowe. Laboratorium 1. Dawid Poªap Aplikacje bazodanowe - laboratorium 1 Luty, 22, / 37

Adres IP

Wybrane działy Informatyki Stosowanej

Podstawowe typy serwerów

Podstawy i języki programowania

Zaawansowany kurs języka Python

Remote Method Invocation 17 listopada 2010

Podejście obiektowe do budowy systemów rozproszonych

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

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

Równolegªo± w Javie w tki.

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

Pracownia internetowa w ka dej szkole (edycja 2004)

Protokoły sieciowe - TCP/IP

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

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ]

Aplikacje RMI Lab4

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Typy uogólnione. Robert A. Kªopotek Wydziaª Matematyczno-Przyrodniczy. Szkoªa Nauk cisªych, UKSW

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

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

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

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ć

Bazy Danych i Usługi Sieciowe

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

Java jako zdalny interfejs aplikacji Webowych aplety

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

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Programowanie w Internecie

Aplikacje RMI

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

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

Sieci komputerowe. Wstęp

1. Model klient-serwer

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);

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

1 Atrybuty i metody klasowe

Programowanie sieciowe

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

Kurs programowania. Wykład 9. Wojciech Macyna

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

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

Architektura aplikacji sieciowych. Architektura klient-serwer

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

Prosta aplikacja klient - serwer na bazie protokoªu UDP. Sprawozdanie.

Programowanie obiektowe

Wywoływanie metod zdalnych

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

Wywoływanie metod zdalnych

Kolekcje obiektów. Wyj tki.

Java. Programowanie Obiektowe Mateusz Cicheński

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

RESTful Android. Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie

Ćwiczenie 9 - Zaawansowane metody programowania w sieci komputerowej

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Model sieci OSI, protokoły sieciowe, adresy IP

1 Intefejsy graczne. 1.1 Okienka. 1.2 Komponenty

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Technologia Programowania 2016/2017 Wykªad 10

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Transkrypt:

Java a dost p do Internetu. Robert A. Kªopotek r.klopotek@uksw.edu.pl Wydziaª Matematyczno-Przyrodniczy. Szkoªa Nauk cisªych, UKSW 20.04.2017

Java a dost p do Internetu Java Networking - jest koncepcj poª czenia dwóch lub wi cej urz dze«komputerowych razem, dzi ki czemu mo»emy dzieli zasoby. klasy i interfejsy odpowiadaj ce za obsªug poª cze«sieciowych znajduj si w pakiecie java.net Programowanie gniazd (Java socket) zapewnia mo»liwo± wspóªu»ytkowania danych mi dzy ró»nymi urz dzeniami komputerowymi. Gniazdo jest punktem ko«cowym dwukierunkowej komunikacji pomi dzy odlegªymi procesami. 2 / 22

Podstawowa terminologia (1/2) Adres IP - unikalny numer przypisany do w zªa sieci, np. 192.168.0.1. Skªada si on z oktetów, które maj zakres od 0 do 255. Jest to logiczny adres, który mo»na zmieni. Protokóª - jest zbiorem reguª zasadniczo stosowanych w komunikacji. Na przykªad: TCP, FTP, Telnet, SMTP, POP itp. Port - numer portu sªu»y do jednoznacznego identykowania ró»nych aplikacji. Dziaªa jako punkt komunikacyjny pomi dzy aplikacjami. Numer portu jest skojarzony z adresem IP do komunikacji mi dzy dwoma aplikacjami. Adres MAC (Media Access Control) - jest unikalnym identykatorem NIC (kontroler interfejsu sieciowego - Network Interface Controller). W zeª sieciowy mo»e mie wiele NIC, ale ka»dy z unikalnym MAC. 3 / 22

Podstawowa terminologia (2/2) Connection-oriented and connection-less protocol W protokole zorientowanym na poª czenie potwierdzenie jest wysyªane przez odbiornik. Jest wi c niezawodny, ale powolny. Przykªadem protokoªu zorientowanego na poª czenia jest TCP. W protokole bez poª czenia, potwierdzenie nie jest wysyªane przez odbiorc. Nie jest to jednak wiarygodne, ale szybkie. Przykªadem protokoªu bez poª czenia jest UDP Gniazdo (socket) - jest punktem ko«cowym komunikacji dwukierunkowej, wi»e adres IP i port. W Javie TCP i UDP obsªuguj gniazda 64K, od 0 do 65535. Numer gniazda (portu) mi dzy 0 a 1023 jest zarezerwowany dla popularnych protokoªów aplikacji (np. port 80 dla protokoªu HTTP, port 443 dla HTTPS, port 21 dla protokoªu FTP, port 23 dla Telnet, port 25 dla SMTP, port 110 dla POP3 itp.) 4 / 22

Programowanie gniazd Programowanie gniazd Java sªu»y do komunikacji mi dzy aplikacjami dziaªaj cymi w ró»nych ±rodowiskach JRE. Programowanie w j zyku Java mo»e by zorientowane na poª czenia lub bez poª czenia. Klasy typu Socket i ServerSocket s wykorzystywane w protokole zorientowanym na poª czenie, a klasy DatagramSocket i DatagramPacket w protokole bez poª czenia. Klient w programowaniu gniazd musi zna dwie informacje: adres IP serwera oraz numer portu 5 / 22

Pakiet java.net 6 / 22

Wyj tki java.net 7 / 22

Architektura OSI 8 / 22

OSI vs TCP/IP 9 / 22

Socket i ServerSocket - metody klas klasa Socket - jest po prostu punktem ko«cowym komunikacji mi dzy maszynami. Klasa Socket mo»e by u»yta do utworzenia gniazda. public InputStream getinputstream() public OutputStream getoutputstream() public synchronized void close() klasa ServerSocket - mo»e by u»yta do utworzenia gniazda serwera. Obiekt ten sªu»y do nawi zywania komunikacji z klientami. ppublic Socket accept() public synchronized void close() 10 / 22

Klient i serwer - przykªad // MyServer. java import java. io.*; import java. net.*; public class MyServer { public static void main ( String [] args ){ try { ServerSocket ss = new ServerSocket (1234); Socket s = ss. accept (); DataInputStream dis = new DataInputStream ( s. getinputstream ()); String str = ( String ) dis. readutf (); System. out. println ( " message = "+ str ); ss. close (); catch ( Exception e) { System. out. println (e ); 11 / 22 // MyClient. java import java. io.*; import java. net.*; public class MyClient { public static void main ( String [] args ) { try { Socket s = new Socket (" localhost ",1234); DataOutputStream dout = new DataOutputStream ( s. getoutputstream ()); dout. writeutf (" Hello Server " ); dout. flush (); dout. close (); s. close (); catch ( Exception e) { System. out. println (e );

Serwer wielow tkowy - przykªad // MultiServer. java import java. io.*; import java. net.*; public class MultiServer { public static void main ( String [] args ){ int number = 0; try { ServerSocket server_socket = new ServerSocket (6000); while ( true ) { Socket socket = server_socket. accept (); System. out. println ( " Zglosil sie klient " ); number ++; new ServiceThread ( socket, number ). start (); catch ( Exception e) { 12 / 22 { System. out. println (e ); // ServiceThread. java import java. io.*; import java. net.*; public class ServiceThread extends java. lang. Thread { private Socket socket ; private int number ; public ServiceThread ( Socket s, int n ){ socket = s; number = n; public void run () {...

DatagramSocket i DatagramPacket klasa DatagramSocket - Klasa Java DatagramSocket reprezentuje gniazdo bez poª czenia, sªu» ce do wysyªania i odbierania pakietów datagramowych. Datagram jest zasadniczo informacj, ale nie ma gwarancji jej zawarto±ci, dostarczenia ani czasu dotarcia. DatagramSocket() throws SocketEeption DatagramSocket(int port) throws SocketEeption DatagramSocket(int port, InetAddress address) throws SocketEeption: klasa DatagramPacket - to wiadomo±, która mo»e zosta wysªana lub odebrana. Je±li wysyªasz wiele pakietów, mog one dociera w dowolnej kolejno±ci. Dodatkowo dostarczenie pakietów nie jest gwarantowane. DatagramPacket(byte[] barr, int length) DatagramPacket(byte[] barr, int length, InetAddress address, int port) 13 / 22

Wysyªanie i odbieranie pakietów - przykªad // DSender. java import java. net.*; public class DSender { public static void main ( String [] args ) throws Exception { DatagramSocket ds = ew DatagramSocket (); String str = " Welcome java "; InetAddress ip = netaddress. getbyname ( " 127.0.0.1 " ); DatagramPacket dp = new DatagramPacket ( str. getbytes (), str. length (), ip, 3000); ds. send ( dp ); ds. close (); 14 / 22 // DReceiver. java import java. net.*; public class DReceiver { public static void main ( String [] args ) throws Exception { DatagramSocket ds = new DatagramSocket (3000); byte [] buf = new byte [1024]; DatagramPacket dp = new DatagramPacket ( buf, 1024); ds. receive ( dp ); String str = new String ( dp. getdata (), 0, dp. getlength ()); System. out. println ( str ); ds. close ();

Java URL Klasa URL reprezentuje adres URL. URL jest skrótem dla Uniform Resource Locator. Wskazuje zasoby w sieci World Wide Web. URL mo»e zawiera takie informacje jak: protokóª, nazwa serwera lub adres IP, numer portu, plik lub katalog Klasa URLConnection reprezentuje ª cze komunikacyjne mi dzy adresem URL a aplikacj. Ta klasa mo»e by u»ywana do odczytu i zapisu danych do okre±lonego zasobu, do którego odwoªuje si URL. Klasa HttpURLConnection to specyczny adres http dla URLConnection. Dziaªa tylko dla protokoªu HTTP. Dzi ki klasie HttpURLConnection mo»na uzyska informacje o dowolnym adresie HTTP, takim jak informacje o nagªówku, kod statusu, kod odpowiedzi itp. java.net.httpurlconnection jest podklas klasy URLConnection. 15 / 22

URL - przykªad // URLDemo. java import java. io.*; import java. net.*; public class URLDemo { public static void main ( String [] args ){ try { URL url = new URL (" http :// rklopotek. blog. uksw. edu. pl / java " ); System. out. println (" Protocol : "+ url. getprotocol ()); System. out. println (" Host Name : "+ url. gethost ()); System. out. println (" Port Number : "+ url. getport ()); System. out. println (" File Name : "+ url. getfile ()); catch ( Exception e ){ System. out. println (e ); 16 / 22

URL - wydruk Protocol : http Host Name : rklopotek. blog. uksw. edu. pl Port Number : -1 File Name : / java 17 / 22

URLConnecton - przykªad import java. io.*; import java. net.*; public class URLConnectionExample { public static void main ( String [] args ){ try { URL url = new URL (" http :// rklopotek. blog. uksw. edu. pl / java " ); URLConnection urlcon = url. openconnection (); InputStream stream = urlcon. getinputstream (); int i; while (( i= stream. read ())!= -1){ System. out. print (( char )i ); catch ( Exception e ){ System. out. println (e ); 18 / 22

HttpURLConnection - przykªad import java. io.*; import java. net.*; import java. util. Map ; public class HttpURLConnectionDemo { public static void main ( String [] args ){ try { URL url = new URL (" http :// rklopotek. blog. uksw. edu. pl / java " ); HttpURLConnection huc =( HttpURLConnection ) url. openconnection (); for ( int i =1; i <=9; i ++){ System. out. println ( huc. getheaderfieldkey (i) +" = "+ huc. getheaderfield (i )); huc. disconnect (); catch ( Exception e ){ System. out. println (e ); 19 / 22

HttpURLConnection - wydruk Date = Wed, 03 May 2017 2 2 : 1 8 : 5 7 GMT S e r v e r = Apache / 2. 4. 6 ( CentOS ) OpenSSL / 1. 0. 1 e f i p s PHP/ 5. 6. 3 0 mod_wsgi / 3. 4 Python / 2. 7. 5 X Powered By = PHP/ 5. 6. 3 0 L i n k = <h t t p : / / r k l o p o t e k. b l o g. uksw. edu. p l /wp j s o n />; r e l ="h t t p s : / / a p i. w. org /" L i n k = <h t t p : / / r k l o p o t e k. b l o g. uksw. edu. p l /?p=6>; r e l=s h o r t l i n k Keep A l i v e = t i m e o u t =5, max=100 C o n n e c t i o n = Keep A l i v e T r a n s f e r Encoding = chunked Content Type = t e x t / html ; c h a r s e t=utf 8 20 / 22

Java URL Klasa InetAddress j zyka Java reprezentuje adres IP. Klasa java.net.inetaddress udost pnia metody uzyskiwania adresu IP dowolnej nazwy hosta, na przykªad www.google.com, www.facebook.com itd. Metody: public static InetAddress getbyname(string host) throws UnknownHostException public static InetAddress getlocalhost() throws UnknownHostException public String gethostname() public String gethostaddress() 21 / 22

22 / 22 Pytania?