Programowanie sieciowe

Wielkość: px
Rozpocząć pokaz od strony:

Download "Programowanie sieciowe"

Transkrypt

1 Programowanie sieciowe Wykład 4: Java sieciowa mgr inŝ. Paweł Kośla mgr Marcin Raniszewski Łódź,

2 Plan wykładu Przegląd java.net InetAddress URL Socket klient TCP ServerSocket serwer TCP 2

3 Literatura dodatkowa Opis klas z pakietu java.net klasy uŝyteczne w programowaniu sieciowym: 3

4 Wprowadzenie Tworzenie programów działających w sieciach było głównym powodem powstania języka Java. Java dostarcza wiele mechanizmów wysokiego poziomu do programowania sieciowego. Podstawowe klasy połączeń (adresowania): InetAddress, URL oraz pochodne URL Do programowania połączeń opartych na protokole TCP: Socket ServerSocket Opartych na UDP: DatagramSocket DatagramPacket Wiele innych klas, interfejsów, oraz wyjątków. 4

5 Klasa InetAddress Opisuje adres komputera w sieci poprzez: Nazwę/domenę np. Numer IP, np WaŜniejszy jest numer IP, w przypadku uŝywania nazwy - tłumaczona ona jest na adres IP. Wybrane metody: public static InetAddress getbyname(string host) throws UnknownHostException public static InetAddress getbyaddress(byte[] addr) throws UnknownHostException public static InetAddress[] getallbyname(string host) throws UnknownHostException public static InetAddress getlocalhost() throws UnknownHostException public boolean ismulticastaddress() public boolean issitelocaladdress() public String gethostname() public byte[] getaddress() public String gethostaddress() public int hashcode() public boolean equals(object obj) public String tostring() 5

6 Klasa InetAddress Brak publicznych konstruktorów. Do tworzenia nowych obiektów uŝywamy metod statycznych. NaleŜy zapewnić obsługę wyjątku UnknownHostException, który powstaje w przypadku braku identyfikacji komputera o podanej nazwie lub adresie. Aby stworzyć obiekt przechowujący adres komputera wykorzystujemy metodę getbyname(string host) try { InetAddress zly = InetAddress.getByName("zly.kis.p.lodz.pl"); InetAddress poli = InetAddress.getByName(" "); catch (UnknownHostException e) { System.err.println(e); 6

7 Klasa InetAddress Lub metodę getbyaddress(byte[] addr), przyjmującą adres IP w postaci tablicy, a nie w postaci łańcucha znaków jak poprzednio try { byte ip[] = {(byte)212, (byte)51, (byte)207, (byte)68; InetAddress poli = InetAddress.getByAddress(ip); catch (UnknownHostException e) { System.err.println(e); 7

8 Klasa InetAddress Niektóre hosty (te, które maja wiele kart sieciowych) pod jedna nazwą mogą mieć wiele adresów IP. Tablicę obiektów reprezentujących adresy hosta uzyskujemy dzięki metodzie getallbyname(string host) try { InetAddress[] addresses = InetAddress.getAllByName("dom1"); for (int i = 0; i < addresses.length; i++) { System.out.println(addresses[i]); catch (UnknownHostException e) { System.out.println(e); dom1/ dom1/ dom1/

9 Klasa InetAddress Do stworzenia obiektu reprezentującego adres komputera lokalnego, na którym uruchomiony zostaje program słuŝy metoda getlocalhost() try { InetAddress me = InetAddress.getLocalHost(); System.out.println(me); catch (UnknownHostException e) { System.err.println(e); dom1/

10 Klasa InetAddress Z obiektu klasy InetAddress moŝemy "wyciągnąć" informacje o hoście Metoda tostring() formatuje informacje do łańcucha znaków w sposób: "nazwa hosta" / "numer IP" Wywoływana automatycznie przy metodzie System.out.println() InetAddress me = InetAddress.getLocalHost(); System.out.println(me); System.out.println(me.toString()); //to samo dom1/ dom1/ MoŜna pobrać takŝe nazwę hosta w postaci ciągu znaków, adres IP jako ciąg znaków oraz adres IP jako tablicę bajtów. SłuŜą do tego kolejno: public String gethostname() public byte[] getaddress() public String gethostaddress() 10

11 Klasa InetAddress Informacje o obiekcie klasy InetAddress try { InetAddress poli = InetAddress.getByName(" "); System.out.println("Nazwa hosta: " + poli.gethostname()); System.out.println("Numer IP: " + poli.gethostaddress()); byte[] address = poli.getaddress(); for (int i = 0; i < address.length; i++) { System.out.print((int)(address[i]&0xFF) + "."); System.out.println(); catch (UnknownHostException e) { Nazwa hosta: ck.p.lodz.pl System.err.println(e); Numer IP:

12 Klasa InetAddress Do sprawdzenia czy adres jest adresem grupowym (z klasy D) słuŝy metoda ismulticastaddress() InetAddress hst = InetAddress.getByName(" "); System.out.println(hst.isMulticastAddress()); true Czy obiekt klasy InetAddress zawiera adres lokalny (prywatny) sprawdzamy metodą issitelocaladdress() InetAddress hst = InetAddress.getByName(" "); System.out.println(me.isSiteLocalAddress()); true 12

13 Klasa URL Inną klasą wykorzystywaną w Javie do adresowania komputerów jest klasa URL oraz jej pochodne URLClassLoader, URLConnection, URLDecoder, URLEncoder, URLStreamHandler. URL jest skrótem od "Uniform Resource Locator", pozwalającym identyfikować lokalizację zasobów w Internecie. Tworząc obiekt klasy URL otrzymujemy gotowy wskaźnik, który jest wykorzystywany przez liczne metody Javy (np. otwieranie obrazka getimage(), tworzenie połączenia w JDBC - Connection). 13

14 Klasa URL Pełny URL składa się z pięciu fragmentów, choć nie wszystkie one są wymagane: protokół host port plik identyfikator fragmentu (np. ref, section, anchor) ciąg zapytania (query) Przykładowe URL: file://dom1/ps/wyklad/ps5.ppt ftp://ftp.info.apple.com/pub/ mailto:pkosla@kis.p.lodz.pl telnet://cyberspace.org 14

15 Klasa URL Istnieją konstruktory, które pozwalają tworzyć URL na podstawie róŝnych fragmentów, jak równieŝ metody do parsowania róŝnych części URL. Metody, które na podstawie URL pozwalają uzyskać InputStream, za pośrednictwem którego moŝna pozyskiwać dane z serwera. Klasa URL hermetyzuje cały ten proces, dzięki czemu uŝytkownik nie musi zajmować się problemami związanymi z obsługą protokołu czyta tylko ze strumienia. Kiedy tworzony jest obiekt URL, Java szuka obsługi protokołu, która rozumie część deklaracji URL dotyczącą protokołu, jak "http" lub "mailto". Jeśli Ŝadna obsługa nie zostanie znaleziona, konstruktor zwraca wyjątek MalformedURLException Rozpoznawane protokoły: - file, ftp, http, - gopher, mailto, - appletresource, doc, netdoc, systemresource, verbatim (stworzone przez Sun, uŝywane wewnętrznie w JDK) Uwaga: większe moŝliwości od klasy java.net.url ma klasa java.net.urlconnection. 15

16 Klasa URL tworzenie Istnieje kilka konstruktorów m.in.: public URL(String u) throws MalformedURLException public URL(String protocol, String host, String file) throws MalformedURLException public URL(String protocol, String host, int port, String file) throws MalformedURLException public URL(URL context, String u) throws MalformedURLException Mając pełny URL, typu: moŝna utworzyć odpowiadający mu obiekt: try { URL u = new URL(" catch (MalformedURLException e) { 16

17 Klasa URL tworzenie MoŜna teŝ utworzyć URL przekazując części ciągu do konstruktora: try{ URL u = new URL("http"," catch (MalformedURLException e){ Zazwyczaj nie definiuje się portu dla URL, gdyŝ większość protokołów uŝywa portów domyślnych (http - port 80). Jeśli jest taka potrzeba: try{ URL u = new URL("http"," catch (MalformedURLException e){ 17

18 Klasa URL tworzenie Wiele plików HTML zawiera URL zdefiniowany relatywnie (są przydatne przy tworzeniu "mobilnych" stron) Relatywne odnośniki dziedziczą host, port, protokół oraz czasem katalog bieŝący strony. Link teach.html na stronie będzie odnośnikiem do Do tworzenia relatywnych URL przy danym bezwzględnym URL słuŝy konstruktor: try { URL u1 = new URL(" URL u2 = new URL(u1, "teach.html"); catch (MalformedURLException e) { 18

19 Klasa URL parsowanie Dostępne są metody do wyłuskania poszczególnych składowych URL: public String getprotocol() public String gethost() public int getport() public int getdefaultport() public String getfile() public String getpath() public String getref() public String getquery() Jeśli port nie jest jawnie wyspecyfikowany w URL, to jest on ustawiany na wartość -1. (uŝyty zostanie port domyślny) Jeśli ref lub query nie istnieje, to zwraca null 19

20 Klasa URL parsowanie Przykład: try { URL u = new URL(" System.out.println("protocol: " + u.getprotocol()); System.out.println("host: " + u.gethost()); System.out.println("port: " + u.getport()); System.out.println("defaultport: " + u.getdefaultport()); System.out.println("file: " + u.getfile()); System.out.println("path: " + u.getpath()); System.out.println("ref: " + u.getref()); System.out.println("query: " + u.getquery()); catch (MalformedURLException ex) { protocol: http host: port: -1 defaultport: 80 file: /search?hl=pl&q=java&lr= path: /search ref: top query: hl=pl&q=java&lr= 20

21 Klasa URL odczyt danych Do otwarcia połączenia z serwerem wyspecyfikowanym w URL oraz utworzenia strumienia InputStream zasilanego danymi z tego połączenia słuŝy metoda : public final InputStream openstream() throws IOException Dane z serwera ściąga się poprzez otwarty strumień. Strumień zawiera tylko czyste, surowe dane (nie przejmujemy się nagłówkami pakietów) Aby odczytać coś ze strumienia korzysta się z metod klas z pakiety java.io. Istotnym jest buforowanie, przez BufferedInputStream lub BufferedReader. 21

22 Klasa URL odczyt danych Przykład kodu wyświetlającego wskazaną stronę www na konsoli: try{ URL u = new URL(" InputStream is = u.openstream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String theline; while ((theline = br.readline())!= null) { System.out.println(theLine); catch (MalformedURLException e){ System.err.println(e); catch (IOException e){ System.err.println(e); <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!-- saved from url=(0033) --> <HTML><HEAD><TITLE>Pawel Kosla KIS</TITLE> <META http-equiv=content-type content="text/html; charset=iso "> <META http-equiv=content-language content=pl>... 22

23 Klient TCP Gniazda klienckie pozwalają na wykonywanie operacji otwierania połączeń z odległymi komputerami, wysyłania i odbierania danych oraz zamykania połączeń. Klasa Socket wysoki poziom programowania. Przesył danych strumieniowych. Dwukierunkowa łączność: sekwencyjnie read write read write read write read write blokowo read read read write write write read read wątki read write read write read write read write write read write Host 1 Host 1 23

24 Klient TCP Schemat blokowy aplikacji: open Socket() connect read write open tworzy gniazdo klienckie connect łączy stworzone gniazdo ze zdalnym hostem (zdalnym gniazdem) read pobiera dane ze strumienia otwartego połączenia write wysyła dane close zamyka połączenie close 24

25 Klient TCP Modyfikacje schematu: open connect open connect read write wątek read write wątek close close synchroniczny transfer asynchroniczny transfer 25

26 Klient TCP nawiązywanie połączeń Do nawiązywania połączenia ze zdalnym hostem słuŝy konstruktor gniazda. KaŜdy obiekt typu Socket jest związany dokładnie z jednym zdalnym hostem. Aby połączyć się z innym hostem, naleŝy utworzyć nowy obiekt typu Socket. Aby utworzyć obiekt typu Socket naleŝy co najmniej wyspecyfikować zdalnego hosta oraz numer portu, z którym chce się utworzyć połączenie. w postaci nazwy hosta: public Socket(String host, int port) throws UnknownHostException, IOException lub obiektu InetAddress: public Socket(InetAddress address, int port) throws IOException 26

27 Klient TCP nawiązywanie połączeń W przypadku wielu lokalnych adresów moŝemy wskazać takŝe z którego będziemy się łączyć. public Socket(String host, int port, InetAddress localaddr, int localport) throws IOException public Socket(InetAddress address, int port, InetAddress localaddr, int localport) throws IOException Wskazać moŝemy takŝe numer portu z którego będziemy się łączyć tradycyjnie numer ten przydzielany jest dynamicznie >1024 (poprzednie konstruktory) NaleŜy uwaŝać, w danej chwili na jednym porcie moŝe być realizowane tylko jedno połączenie. Dynamiczne wybieranie wolnego portu przez system realizujemy przez wartość portu 0. Przykład: Socket("zly.kis.p.lodz.pl", 21, " ", 0); 27

28 Klient TCP nawiązywanie połączeń Prosty program nawiązujący połączenie ze zdalnym hostem. import java.net.*; import java.io.*; /** * Przyklad klienta nawiazujacego polaczenie sieciowe TCP */ public class Klient { public static void main(string[] args) { try { Socket gniazdo = new Socket("zly.kis.p.lodz.pl", 21); System.out.println("Nawiazano polaczenie"); gniazdo.close(); catch(ioexception e){ System.out.println("Podczas proby nawiazania polaczenia wystapil blad" + e); 28

29 Klient TCP nawiązywanie połączeń Konstruktory mogą zwrócić wyjątki, konieczne jest zapewnienie ich obsługi. Ogólnie jest to klasa wyjątków IOException Przydatne są bardziej szczegółowe informacje niŝ te które dostarcza IOException. Do dyspozycji mamy klasę wyjątków związanych z gniazdem SocketException, która zawiera: ConnectException połączenie odrzucone, np. Ŝaden proces nie nasłuchuje na danym porcie na zdalnym hoście NoRouteToHostException host niedostępny, np. jest za firewallem PortUnreachableException nieosiągalny port W przypadku konstruktorów z hostem identyfikowanym jako String naleŝy dodatkowo obsłuŝyć wyjątek UnknownHostException (niejawnie wywołana metoda gethostbyname() ) 29

30 Klient TCP nawiązywanie połączeń Szczegółowa obsługa wyjątków: try { Socket gniazdo = new Socket("zly.kis.p.lodz.pl", 21); System.out.println("Nawiazano polaczenie"); gniazdo.close(); catch(unknownhostexception e){ System.out.println("komputer nie jest znany"); catch(noroutetohostexception e){ System.out.println("komputer jest niedostepny"); catch(connectexception e){ System.out.println("komputer odrzucil polaczenie"); catch(ioexception e){ System.out.println("Podczas proby nawiazania polaczenia wystapil blad" + e); 30

31 Klient TCP info o połączeniu gniazdo lokalne gniazdo zdalne Obiekt klasy Socket dostarcza informacji o gnieździe lokalnym i zdalnym Obiekt InetAddress do którego się podłączyliśmy i z którego się łączymy moŝemy pobrać metodami: public InetAddress public InetAddress getinetaddress() getlocaladdress() Numery portów połączenia na zdalnym i lokalnym gnieździe: public int public int getport() getlocalport() getlocalport() przydatne do sprawdzenia który port został dynamicznie wybrany przez klienta. Metoda tostring() zwraca informacje o gnieździe w postaci łańcucha znakowego, np.: Socket[addr=zly.kis.p.lodz.pl/ ,port=21,localport=1116] 31

32 Klient TCP info o połączeniu Odczyt informacji o gnieździe try { Socket gniazdo = new Socket("zly.kis.p.lodz.pl", 21); System.out.println("Nawiazano polaczenie"); System.out.println(gniazdo); System.out.println("Dynamicznie wybrany port lokalny: " + gniazdo.getlocalport()); gniazdo.close(); catch(ioexception e){ System.out.println("Podczas proby nawiazania polaczenia wystapil blad" + e); Nawiazano polaczenie Socket[addr=zly.kis.p.lodz.pl/ ,port=21,localport=1115] Dynamicznie wybrany port lokalny:

33 Klient TCP skaner portów Nie moŝna połączyć się ze zdalnym hostem na dowolnym porcie. Aby połączenie doszło do skutku zdalny host musi nasłuchiwać na danym porcie. Do określenia, na którym porcie zdalny host nasłuchuje moŝna wykorzystać konstruktor Socket import java.net.*; import java.io.*; public class Klient { public static void main(string[] args) { for (int port = 0; port < 65536; port++) { try { Socket s = new Socket("localhost", port); System.out.println("Serwer ma otwarty port: " + port); s.close(); catch (IOException e) { System.out.println("zamkniety port: " + port); Uwaga: Skanowanie portów moŝe być zinterpretowane jako próba ataku na zdalny serwer. 33

34 Klient TCP odczyt i zapis danych Po nawiązaniu połączenia przesyłamy i odbieramy dane Metody odbierające dane są metodami blokującymi (czekają aŝ pojawią się dane w strumieniu) Rodzaje danych: - tekstowe - binarne - dane serializowane (obiekty) Obiekty InputStream, OutputStream reprezentują strumienie wejściowe i wyjściowe połączenia sieciowego. Do wydobycia tych strumieni słuŝą metody klasy Socket: public InputStream getinputstream() throws IOException public OutputStream getoutputstream() throws IOException 34

35 Klient TCP dane tekstowe Analogia do czytania z plików, z klawiatury, z URL. Przejście ze strumienia do treści przesyłanej za pomocą klas konwertujących. InputStream is = gniazdo.getinputstream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); InputStreamReader - strumień przekształcający bajtowy strumień w strumień znaków BufferedReader - strumień buforujący dane i umoŝliwiający czytanie danych porcjami. W przypadku klawiatury: InputStream is = System.in; 35

36 Klient TCP dane tekstowe Klasa BufferedReader udostępnia następujące metody wczytujące: public int read() throws IOException Czyta pojedynczy znak ze strumienia. Zwraca go w postaci int. W przypadku napotkania końca strumienia zwraca -1. public int read(char[] cbuf, int off, int len) throws IOException Wczytuje porcje znaków (len) do tablicy (cbuf) z określonego miejsca ze strumienia (off). Zwraca ilość wczytanych znaków lub -1 w przypadku końca strumeinia public String readline() throws IOException Wczytuje linię tekstu zakończoną '\n' lub '\r' 36

37 Klient TCP dane tekstowe,daytime Zastosowanie do usługi DayTime. Serwer czasu, po połączeniu się z nim na porcie 13 wysyła datę w postaci łańcucha znaków. Usługę udostępniają np. vega.cbk.poznan.pl lub ntp.task.gda.pl Data podawana jest w postaci: Sat Mar 8 14:47:

38 Klient TCP dane tekstowe,daytime import java.net.*; import java.io.*; public class DayTime{ public static void main(string[] args) { String hostname; if(args.length == 0) hostname = "localhost"; else hostname = args[0]; try{ Socket gniazdo = new Socket(hostName,13); InputStream is = gniazdo.getinputstream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String czas = br.readline(); System.out.println("czas na komputerze " + hostname + " to " + czas); catch(ioexception e){ System.out.println(e); >java DayTime vega.cbk.poznan.pl czas na komputerze vega.cbk.poznan.pl to Thu Mar 4 14:53:

39 Klient TCP dane tekstowe Zapis danych następuje podobnie. OutpuStream os = gniazdo.getoutputstream(); PrintWriter pw = new PrintWriter(os, true); Klasa PrintWriter udostępnia metodę zapisu print(...) przyjmującą argumenty w postaci liczb lub łańcuchów String. PoniewaŜ println(...) w tym przypadku nie dodaje znaczników końca wiersza, musimy sami się tym zaopiekować: pw.print("tekst" + "\r\n"); MoŜemy takŝe pisać bezpośrednio do obiektu OutputStream. Dostępne mamy tam metody: public void write(byte[] b) throws IOException Zapisuje b.length bajtów z tablicy bajtowej do strumienia wyjściowego. public void write(byte[] b, int off, int len) throws IOException Zapisuje len bajtów z tablicy bajtowej, zaczynając od pozycji off do strumienia wyjściowego. 39

40 Klient TCP dane tekstowe, echo Podstawa echo import java.net.*; import java.io.*; public class Start{ String msg = "to jest wiadomosc"; public static void main(string[] args) { Start me = new Start(); me.echo("localhost"); public void echo(string host){ try{ Socket sock = new Socket(host, 7); BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream())); PrintWriter out = new PrintWriter(sock.getOutputStream()); out.print(msg + "\r\n"); out.flush(); String reply = in.readline(); System.out.println("wyslano \"" + msg + "\""); System.out.println("odebrano \"" + reply + "\""); sock.close(); catch(ioexception e){ System.out.println("Blad "+e); flush() powoduje wysłanie zawartości bufora w sieć!! 40

41 Klient TCP dane binarne Jeśli chcemy przekazywać dane binarne musimy utworzyć obiekty klas DataInputStream oraz DataOutputStream. Najprostszy sposób: DataInputStream in = new DataInputStream(gniazdo.getInputStream()); DataOutputStream out = new DataOutputStream(gniazdo.getOutputStream()); Jeśli ilość danych przekazywanych moŝe być duŝa, warto wykorzystać strumienie buforowane: DataInputStream in = new DataInputStream( new BufferedInputStream(gniazdo.getInputStream())); DataOutputStream out = new DataOutputStream( new BufferedOutputStream(gniazdo.getOutputStream())); 41

42 Klient TCP dane binarne Wśród metod powyŝszych klas są następujące: public final boolean readboolean() throws IOException public final byte readbyte() throws IOException public final int readunsignedbyte() throws IOException! public final short readshort() throws IOException public final int readunsignedshort() throws IOException! public final char readchar() throws IOException public final int readint() throws IOException public final long readlong() throws IOException public final float readfloat() throws IOException public final double readdouble() throws IOException public final void writeboolean(boolean v) throws IOException public final void writebyte(int v) throws IOException! public final void writeshort(int v) throws IOException! public final void writechar(int v) throws IOException! public final void writeint(int v) throws IOException public final void writelong(long v) throws IOException public final void writefloat(float v) throws IOException public final void writedouble(double v) throws IOException 42

43 Klient TCP dane binarne Fragment kodu programu odbierającego liczbę int z hosta zdalnego Serwer po połączeniu wysyła liczbę int. try{ Socket sock = new Socket(" ",10); DataInputStream in = new DataInputStream( new BufferedInputStream(sock.getInputStream())); int liczba = in.readint(); System.out.println("odebralem liczbe: " + liczba); sock.close(); catch(ioexception e){ System.out.println("Blad "+e); 43

44 Klient TCP dane serializowane Serializacja obiektów to moŝliwość skonwertowania obiektów przechowywanych w pamięci komputera do zewnętrznej postaci, którą moŝna wysłać w sposób szeregowy. Jeśli chcemy przekazywać obiekty musimy utworzyć obiekty klas ObjectInputStream oraz ObjectOutputStream. Analogicznie jak poprzednio: Socket gniazdo = new Socket(" ",1050); ObjectInputStream in = new ObjectInputStream( new BufferedInputStream(gniazdo.getInputStream())); ObjectOutputStream out = new ObjectOutputStream( new BufferedOutputStream(gniazdo.getOutputStream())); NajwaŜniejszymi metodami tych klas są odpowiednio: public final Object readobject() throws IOException, ClassNotFoundException public final void writeobject(object obj) throws IOException Klasy te mają takŝe metody znane z obsługi danych binarnych. readint(), writefloat(float v)... 44

45 Klient TCP dane serializowane Przykład klienta TCP odbierającego obiekt klasy Date Serwer wysyła obiekt klasy Date zawierający aktualna datę serwera import java.net.*; import java.io.*; import java.util.*; public class Klient { public static void main(string[] args) { try{ Socket sock = new Socket(" ",10); ObjectInputStream in = new ObjectInputStream( new BufferedInputStream(sock.getInputStream())); Object ob = in.readobject(); if(ob == null) { System.out.println("Serwer przeslal null"); else if (ob instanceof Date) { Date d = (Date)ob; System.out.println("data: " + d); else{ throw new ClassNotFoundException("oczekiwano daty, odebrano obiekt klasy "+ob); sock.close(); catch(classnotfoundexception e) { System.out.println(e); catch(ioexception e) { System.out.println("Blad "+e); data: Thu Mar 16 18:25:10 CET

46 Klient TCP - podsumowanie Aby mieć moŝliwość wysyłania i odbierania danych najpierw naleŝy połączyć się ze zdalnym hostem (serwerem). Dane przesyłamy strumieniowo. MoŜna przesyłać łańcuchy tekstowe, dane binarne (np. liczby) oraz obiekty. Dane przesyłane będą wiarygodnie. 46

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW 1. Procedura korzystania ze strumieni danych Aby utworzyć plik: 1) Należy utworzyć obiekt (np. typu FileOutputStream), powiązany ze plikiem danych binarnych (np.

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone Programowanie współbieżne i rozproszone WYKŁAD 6 dr inż. Komunikowanie się procesów Z użyciem pamięci współdzielonej. wykorzystywane przede wszystkim w programowaniu wielowątkowym. Za pomocą przesyłania

Bardziej szczegółowo

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

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5. 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

Bardziej szczegółowo

Platformy Programistyczne Zagadnienia sieciowe i wątki

Platformy Programistyczne Zagadnienia sieciowe i wątki 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

Bardziej szczegółowo

Adresy URL. Zaawansowane technologie Javy 2019

Adresy URL. Zaawansowane technologie Javy 2019 Adresy URL Zaawansowane technologie Javy 2019 Podstawowe pojęcia dotyczące sieci Sieć to zbiór komputerów i innych urządzeń, które mogą się ze sobą komunikować w czasie rzeczywistym za pomocą transmisji

Bardziej szczegółowo

Programowanie sieciowe

Programowanie sieciowe Programowanie sieciowe Wykład 5: Java sieciowa cd. mgr inŝ. Paweł Kośla mgr Marcin Raniszewski Łódź, 2009 1 Plan wykładu ServerSocket serwer TCP DatagramSocket i DatagramPacket UDP FTP 2 Serwer TCP Gniazdo

Bardziej szczegółowo

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

Wykład 2. Strumienie tekstowe (wprowadzanie danych z klawiatury) i bajtowe, otwieranie strumieni poprzez sieć - obiekty URL Wykład 2 Strumienie tekstowe (wprowadzanie danych z klawiatury) i bajtowe, otwieranie strumieni poprzez sieć - obiekty URL 1. Procedura korzystania ze strumieni tekstowych wejściowych powiązanych ze standardowym

Bardziej szczegółowo

JAVA I SIECI. MATERIAŁY: http://docs.oracle.com/javase/tutorial/networking/index.html

JAVA I SIECI. MATERIAŁY: http://docs.oracle.com/javase/tutorial/networking/index.html JAVA I SIECI ZAGADNIENIA: URL, Interfejs gniazd, transmisja SSL, protokół JNLP. MATERIAŁY: http://docs.oracle.com/javase/tutorial/networking/index.html http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA,

Bardziej szczegółowo

Java programowanie sieciowe

Java programowanie sieciowe Java programowanie sieciowe Podstawowe pojęcia dotyczące sieci Sieć to zbiór komputerów i innych urządzeń, które mogą się ze sobą komunikować w czasie rzeczywistym za pomocą transmisji danych. Każda maszyna

Bardziej szczegółowo

Aplikacja wielowątkowa prosty komunikator

Aplikacja wielowątkowa prosty komunikator Aplikacja wielowątkowa prosty komunikator Klient 0 (host 1) Wątek 0 Komponent serwera Wątek pochodny 3.1 Klient 1 (host 2) Wątek 1 Komponent serwera Wątek pochodny 3.2 Host 4 Serwer Wątek 3 Klient 2 (host

Bardziej szczegółowo

URL. Budowa URL (ang. Uniform Resource Locator): http://java.sun.com:80/docs/tutorial/index.html?name=net working#downloading

URL. Budowa URL (ang. Uniform Resource Locator): http://java.sun.com:80/docs/tutorial/index.html?name=net working#downloading Obsługa sieci URL Budowa URL (ang. Uniform Resource Locator): http://java.sun.com:80/docs/tutorial/index.html?name=net working#downloading protokół = http authority = java.sun.com:80 host = java.sun.com

Bardziej szczegółowo

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

Kurs programowania. Wykład 10. Wojciech Macyna. 05 maja 2016 Wykład 10 05 maja 2016 Biblioteka wejścia/wyjścia (Input/Output) import java.io.*; Umożliwia przechowywania danych na nośniku zewnętrznym Dane moga być wysyłane do plików, na drukarkę, do bufora pamięci,

Bardziej szczegółowo

Przykłady interfejsu TCP i UDP w Javie

Przykłady interfejsu TCP i UDP w Javie Przykłady interfejsu TCP i UDP w Javie W Javie interfejsy TCP i UDP znajdują się w pakiecie java.net http://docs.oracle.com/javase/6/docs/api/java/net/packagesummary.html 1 Przykład interfejsu UDP Protokół

Bardziej szczegółowo

Programowanie w języku Java

Programowanie w języku Java Programowanie w języku Java Wykład 4: Programowanie rozproszone: TCP/IP, URL. Programowanie sieciowe w Javie proste programowanie sieciowe (java.net) na poziomie UDP na poziomie IP na poziomie URL JDBC

Bardziej szczegółowo

Programowanie rozproszone w języku Java

Programowanie rozproszone w języku Java Wstęp Gniazda RMI Podsumowanie Programowanie rozproszone w języku Java Wojciech Rząsa wrzasa@prz-rzeszow.pl Katedra Informatyki i Automatyki, Politechnika Rzeszowska 25 maja 2015 Wojciech Rząsa, KIiA PRz

Bardziej szczegółowo

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

Strumienie tekstowe (wprowadzanie danych z klawiatury) i bajtowe, otwieranie strumieni przez sieć - obiekty URL Strumienie tekstowe (wprowadzanie danych z klawiatury) i bajtowe, otwieranie strumieni przez sieć - obiekty URL Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1 1. Strumienie

Bardziej szczegółowo

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

Języki i metody programowania Java INF302W Wykład 4 Języki i metody programowania Java INF302W Wykład 4 Autor Dr inż. Zofia Kruczkiewicz 1 Struktura wykładu 1. Strumienie binarne i tekstowe niebuforowane i buforowane, obsługa plików tekstowych, wprowadzanie

Bardziej szczegółowo

Komunikacja z użyciem gniazd aplikacje klient-serwer

Komunikacja z użyciem gniazd aplikacje klient-serwer Programowanie obiektowe Komunikacja z użyciem gniazd aplikacje klient-serwer Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Architektura

Bardziej szczegółowo

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

KOMUNIKACJA MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA 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

Bardziej szczegółowo

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

STRUMIENIE TEKSTOWE WEJŚCIOWE WPROWADZANIE DANYCH STRUMIENIE BAJTOWE, STRUMIENIE TEKSTOWE STRUMIENIE TEKSTOWE WEJŚCIOWE WPROWADZANIE DANYCH STRUMIENIE BAJTOWE, STRUMIENIE TEKSTOWE 1) Strumienie tekstowe wejściowe wprowadzanie danych Procedura korzystania ze strumieni tekstowych wejściowych

Bardziej szczegółowo

Networking. Zaawansowane technologie Javy 2019

Networking. Zaawansowane technologie Javy 2019 Networking Zaawansowane technologie Javy 2019 Model klient-serwer W modelu klient-serwer (ang. client-server) dane trzymane są na serwerze, interfejs użytkownika i logika przetwarzania danych są realizowane

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 8 - wprowadzenie do obsługi plików tekstowych i wyjątków mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 11 grudnia 2017 1 / 34 mgr inż. Krzysztof

Bardziej szczegółowo

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

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2. Aplikacje RMI Część 2 Budowa aplikacji rozproszonych http://java.sun.com/j2se/1.5.0/docs/guide/rmi/socketfactory/index.html I. Implementacja gniazd dziedziczących po Socket i ServerSocket oraz produkcji

Bardziej szczegółowo

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

Język JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 6, część 2 Jacek Rumiński 1 Język JAVA podstawy Plan wykładu: 1. Wprowadzenie do operacji wejścia/wyjścia: strumienie 2. Podstawowe klasy strumieni i InputStream/OutputStream

Bardziej szczegółowo

K O M U N I K A C J A 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 Wykorzystano fragmenty wykładów M. Piotrowskiego i M. Wójcika K O M U N I K A C J A MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA Waldemar Korłub Platformy Technologiczne KASK ETI Politechnika Gdańska

Bardziej szczegółowo

Strumienie i serializacja

Strumienie i serializacja Strumienie i serializacja Prezentacja dostępna na Syriuszu: http://sirius.cs.put.poznan.pl/~inf80156 Klasy: InputStream, OutputStream, Reader i Writer W Javie hierarchia strumieni oparta jest o cztery

Bardziej szczegółowo

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

Obiekty sieciowe - gniazda Komputery w sieci Internet komunikują się ze sobą poprzez: Obiekty sieciowe - gniazda Komputery w sieci Internet komunikują się ze sobą poprzez: TCP (Transport Control Protocol) User Datagram Protocol (UDP). TCP/IP (IP - Iternet Protocol) jest warstwowym zestawem

Bardziej szczegółowo

Zadanie 2: transakcyjny protokół SKJ (2015)

Zadanie 2: transakcyjny protokół SKJ (2015) Zadanie 2: transakcyjny protokół SKJ (2015) 1 Wstęp Zadanie polega na zaprojektowaniu niezawodnego protokołu transakcyjnego bazującego na protokole UDP. Protokół ten ma być realizowany przez klasy implementujące

Bardziej szczegółowo

Aplikacja wielow tkowa prosty komunikator

Aplikacja wielow tkowa prosty komunikator Aplikacja wielow tkowa prosty komunikator Klient 0 (host 1) W tek 0 Komponent serwera W tek pochodny 3.1 Klient 1 (host 2) W tek 1 Komponent serwera W tek pochodny 3.2 Host 4 Serwer W tek 3 Klient 2 (host

Bardziej szczegółowo

Java a dost p do Internetu.

Java a dost p do Internetu. 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

Bardziej szczegółowo

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

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu. Wstęp Java Zadanie Celem laboratorium jest zapoznanie się z podstawami platformy oraz języka Java. W ramach zadania należy przygotować aplikację zarządzania notatkami użytkownika obsługiwaną z konsoli.

Bardziej szczegółowo

Metody zawarte w klasie File: boolean createnewfile() tworzy nowy, pusty plik, ale tylko jeśli on wcześniej nie istniał. boolean delete() usuwa dany

Metody zawarte w klasie File: boolean createnewfile() tworzy nowy, pusty plik, ale tylko jeśli on wcześniej nie istniał. boolean delete() usuwa dany Metody zawarte w klasie File: boolean createnewfile() tworzy nowy, pusty plik, ale tylko jeśli on wcześniej nie istniał. boolean delete() usuwa dany plik. boolean exists() sprawdza czy plik o zadanej nazwie

Bardziej szczegółowo

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

Wykład 7 Tworzenie łącz w apletach, wątki, serializacja obiektów, gniazda Wykład 7 Tworzenie łącz w apletach, wątki, serializacja obiektów, gniazda 1.Tworzenie łącz w apletach W pliku html zastosowano znacznik PARAM z abutami: name oraz value

Bardziej szczegółowo

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

Podstawowe pojł cia. Czego sił nauczymy? Pojł cia hosta. Hosty Adresowanie Internetowe Porty Protokoóy Czego sił nauczymy? Podstawowe pojł cia Adresowania w Internecie URL CGI Servlety i JSP Sokety Sokety dla aplikacji serwerowych UDP Obsóuga XMLa z poziomu Javy z wykorzystaniem interfejso w SAX i DOM WebServices,

Bardziej szczegółowo

Java programowanie w sieci. java.net RMI

Java programowanie w sieci. java.net RMI Java programowanie w sieci java.net RMI Programowanie sieciowe OSI WARSTWA APLIKACJI (7) WARSTWA PREZENTACJI(6) WARSTWA SESJI (5) WARSTWA TRANSPORTU (4) DoD Warstwa aplikacji (HTTP) Transport (gniazdka)

Bardziej szczegółowo

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

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt JAVA Pliki - zapis i odczyt Opracował: Andrzej Nowak Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Strumienie wejścia i wyjścia Strumienie wejścia

Bardziej szczegółowo

Gniazda komunikacji sieciowej w środowisku Java

Gniazda komunikacji sieciowej w środowisku Java Gniazda komunikacji sieciowej w środowisku Java Dariusz.Wawrzyniak@cs.put.poznan.pl 1 Obsługa gniazd 2 Obsługa komunikacji strumieniowej Obsługa komunikacji pakietowej Pakiet java.net Obsługa gniazd Pakiet

Bardziej szczegółowo

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

Wykład 10: Wejście i Wyjście Wykład 10: Wejście i Wyjście Pakiet java.io. Wejście/Wyjście Program realizuje wejście/wyjście przez użycie potoku. Ten sam sposób obsługi różnych urządzeń: konsola klawiatura plik na dysku gniazdko sieciowe,

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie aplikacji w architekturze Klient-Serwer - UDP

Programowanie aplikacji w architekturze Klient-Serwer - UDP Katedra Inżynierii Komputerowej Koszalin 2002 Programowanie dla sieci Wykłady i ćwiczenia Dariusz Rataj Część 2 Programowanie aplikacji w architekturze Klient-Serwer - UDP Kontakt email: rataj@man.koszalin.pl

Bardziej szczegółowo

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

Biblioteki wejścia/wyjścia. Strumienie we/wy (I/O) Biblioteki wejścia/wyjścia Strumienie we/wy (I/O) Pojęcie strumienia Strumień reprezentuje źródło lub odbiorcę danych (obiekt zdolny odbierać lub produkować dane). Strumień ukrywa szczegóły związane z

Bardziej szczegółowo

Wykład 2: Podstawy Języka

Wykład 2: Podstawy Języka Wykład 2: Podstawy Języka 1.wprowadzenie 2.podstawy języka 3.sterowanie 4.inicjacja i sprzątanie 5.kontrola dostępu 6.dziedziczenie 7.polimorfizm 8.obsługa błędów 9.kolekcje obiektów 10.wejście i wyjście

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Przygotował: Jacek Sroka 1 Programowanie obiektowe Wykład 9 Serializacja Przygotował: Jacek Sroka 2 Przypomnienie Abstrakcja strumienia hierarchia binarna InputStream/OutputStream hierarchia znakowa Reader/Writer

Bardziej szczegółowo

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

Podstawy otwartych języków programowania Wyjątki i strumienie I/O Podstawy otwartych języków programowania Wyjątki i strumienie I/O Wiktor Wandachowicz Wyjątki Podstawą filozofii Javy jest założenie, że: źle sformułowany kod nie zostanie wykonany Wyjątki są mechanizmem

Bardziej szczegółowo

Strumienie, pliki. Sortowanie. Wyjątki.

Strumienie, pliki. Sortowanie. Wyjątki. Strumienie, pliki. Sortowanie. Wyjątki. Serializacja Zapisuje całą klasę Plik binarny Delimiter nieokreślony Nie da się podglądać Pliki tekstowe Zapisuje wybrane informacje Plik tekstowy Delimiter ustawiamy

Bardziej szczegółowo

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

sieć 4) Mechanizm RMI jest zazwyczaj wykorzystywany w rozwiązaniach typu klient-serwer. RMI (Remote Method Invocation) zdalne wywołanie metod Część 1 1) RMI jest mechanizmem, który pozwala danej aplikacji: wywoływać metody obiektów zdalnych oraz uzyskać dostęp do obiektów zdalnych (np. w

Bardziej szczegółowo

Przykład. Podaj nazwę domenową hosta a odczytaj jego adres IP, lub odwrotnie:

Przykład. Podaj nazwę domenową hosta a odczytaj jego adres IP, lub odwrotnie: Adres internetowy klasa wxipv4address - wymaga #include Najważniejsze metody: bool Hostname(const wxstring& hostname) ustawia nazwę domenową hosta lub adres IP w notacji kropki: a.b.c.d bool

Bardziej szczegółowo

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

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu Zdalne wywołanie metod - koncepcja Oprogramowanie systemów równoległych i rozproszonych Wykład 7 RMI (Remote Method Invocation) - obiektowe RPC, dostarcza klientowi interfejs do obiektu, implementacja

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

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

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 1 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa w klasie! 2 Język

Bardziej szczegółowo

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

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną,

Bardziej szczegółowo

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

Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Wykład 7 p. 1/2 Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Zdalne wywołanie

Bardziej szczegółowo

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

Wykład 4: Wejście/wyjście: strumienie Java PK1 2006_2018 Walery Susłow Programowanie komputerów Wykład 4: Wejście/wyjście: strumienie Java dr inż. Walery Susłow walery.suslow@tu.koszalin.pl Wejście/wyjście Podstawowy mechanizm wejścia-wyjścia znajduje

Bardziej szczegółowo

Klient-Serwer Komunikacja przy pomocy gniazd

Klient-Serwer Komunikacja przy pomocy gniazd II Klient-Serwer Komunikacja przy pomocy gniazd Gniazda pozwalają na efektywną wymianę danych pomiędzy procesami w systemie rozproszonym. Proces klienta Proces serwera gniazdko gniazdko protokół transportu

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Tworzenie aplikacji rozproszonej w Sun RPC

Tworzenie aplikacji rozproszonej w Sun RPC Tworzenie aplikacji rozproszonej w Sun RPC Budowa aplikacji realizowana jest w następujących krokach: Tworzenie interfejsu serwera w języku opisu interfejsu RPCGEN Tworzenie: namiastki serwera namiastki

Bardziej szczegółowo

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

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

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

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1. Wielowątkowość Programowanie w środowisku rozproszonym. Wykład 1. Informacje organizacyjne Wymiar godzin: W-30, LAB-15 Zaliczenie wykonanie kilku programów i ich zaliczenie (w trakcie zajęć laboratoryjnych)

Bardziej szczegółowo

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej Wybrane działy Informatyki Stosowanej Dr inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki 2017 APLIKACJE SIECIOWE Definicja Architektura aplikacji sieciowych Programowanie

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych Podejście obiektowe do budowy systemów rozproszonych Wywoływanie metod zdalnych model systemu obiekt aplikacja kliencka interfejs serwer proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 11: Serializacja obiektów 5/19/2013 S.Deniziak:Programowanie obiektowe 1 Problem składowania/przesyłania danych Strumienie Tylko typy proste Konieczność ręcznego odtwarzania

Bardziej szczegółowo

Podejście obiektowe do budowy systemów rozproszonych

Podejście obiektowe do budowy systemów rozproszonych Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak 1 Mechanizm RMI umożliwia

Bardziej szczegółowo

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

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

Gniazda BSD implementacja w C#

Gniazda BSD implementacja w C# BSD implementacja w C# Implementacja w C#: Przestrzeń nazw: System.Net.Sockets Klasa: public class Socket : IDisposable Implementacja w C#: Konstruktor: public Socket( AddressFamily addressfamily, SocketType

Bardziej szczegółowo

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1 interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

Podejście obiektowe do budowy systemów rozproszonych

Podejście obiektowe do budowy systemów rozproszonych Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak (IIPP) 1 Mechanizm

Bardziej szczegółowo

Systemy Rozproszone - Ćwiczenie 6

Systemy Rozproszone - Ćwiczenie 6 Systemy Rozproszone - Ćwiczenie 6 1 Obiekty zdalne Celem ćwiczenia jest stworzenie obiektu zdalnego świadczącego prostą usługę nazewniczą. Nazwy i odpowiadające im punkty końcowe będą przechowywane przez

Bardziej szczegółowo

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

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); 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); a) b) c) d) 2. Jaki będzie wynik kompilacji i wykonania

Bardziej szczegółowo

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

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka stub interfejs serwer szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

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

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Dr inż. Zofia Kruczkiewicz Dwa sposoby tworzenia apletów Dwa sposoby

Bardziej szczegółowo

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Ćwiczenie 1. Kolejki IBM Message Queue (MQ) Ćwiczenie 1. Kolejki IBM Message Queue (MQ) 1. Przygotowanie Przed rozpoczęciem pracy, należy uruchomić "Kreator przygotowania WebSphere MQ" oraz przejść przez wszystkie kroki kreatora, na końcu zaznaczając

Bardziej szczegółowo

Klasy w java.net. ContentHandlerFactory FileNameMap SocketImplFactory URLStreamHandlerFactory. Adres internetowy

Klasy w java.net. ContentHandlerFactory FileNameMap SocketImplFactory URLStreamHandlerFactory. Adres internetowy Klasy w java.net Klasy Interfejsy Wyjątki ContentHandler DatagramPacket DatagramSocket DatagramSocketImpl HttpURLConnection InetAddress MulticastSocket ServerSocket Socket SocketImpl URL URLConnection

Bardziej szczegółowo

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

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Krzysztof Lemay, Naughton Barteczko R. Cadenhead JAVA, Java Podręcznik 2 wykłady dla kaŝdego Języka i ćwiczenia Programowania

Bardziej szczegółowo

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

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski Sieci komputerowe Wykład 5: Warstwa transportowa: TCP i UDP Marcin Bieńkowski Instytut Informatyki Uniwersytet Wrocławski Sieci komputerowe (II UWr) Wykład 5 1 / 22 Warstwa transportowa Cechy charakterystyczne:

Bardziej szczegółowo

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

Java niezbędnik programisty spotkanie nr 11. Importy statyczne, wejście/wyjście, wyrażenia regularne, serializacja Java niezbędnik programisty spotkanie nr 11 Importy statyczne, wejście/wyjście, wyrażenia regularne, serializacja 1 Importowanie składowych statycznych Opracował Import static java.lang.system.out; //import

Bardziej szczegółowo

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Narzędzia i aplikacje Java EE Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Niniejsze opracowanie wprowadza w technologię usług sieciowych i implementację usługi na platformie Java EE (JAX-WS) z

Bardziej szczegółowo

Remote Method Invocation 17 listopada 2010

Remote Method Invocation 17 listopada 2010 Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja klienckak interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT] Programowanie w Javie Lista nr 1 1. Jak uruchomić pierwszy program w Javie? Przykład przy wykorzystaniu NetBeans: File->New Project Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

Bardziej szczegółowo

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

1 Klasa File. 2 Writer. Programowanie w j zyku Java - Adam Krechowicz. Klasa File zapewnia podstawowe operacje na plikach Programowanie w j zyku Java - Adam Krechowicz 1 Klasa File Klasa File zapewnia podstawowe operacje na plikach import java.io.file; public class FileTest { File f = new File("/home/adam/abc.txt"); f.createnewfile();

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

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

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu

Bardziej szczegółowo

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

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować

Bardziej szczegółowo

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne Przykład 1 metody i atrybuty statyczne public class Napis1 { static String wynik; public static void Inicjuj() {wynik = ""; PODEJŚCIE OBIEKTOWE public static void Dopisz_do_wyniku(char ch) { wynik+="\nkod

Bardziej szczegółowo

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h] 1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie

Bardziej szczegółowo

Ćwiczenie 1. Przygotowanie środowiska JAVA

Ćwiczenie 1. Przygotowanie środowiska JAVA Ćwiczenie 1 Przygotowanie środowiska JAVA 1. Wprowadzenie teoretyczne Instalacja JDK (Java Development Kit) NaleŜy pobrać z java.sun.com środowisko i zainstalować je. Następnie naleŝy skonfigurować środowisko.

Bardziej szczegółowo

76.Struktura oprogramowania rozproszonego.

76.Struktura oprogramowania rozproszonego. 76.Struktura oprogramowania rozproszonego. NajwaŜniejsze aspekty obiektowego programowania rozproszonego to: Współdziałanie (interoperability) modułów programowych na róŝnych maszynach. Wielokrotne wykorzystanie

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów

Bardziej szczegółowo

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

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1 P d jś i bi kt d b d t ó Podejście obiektowe do budowy systemów rozproszonych Dariusz Wawrzyniak (IIPP) 1 interfejs (w języku Java),wywiedziony idi z Remote obie kt aplikacja klie ncka interfe js serw

Bardziej szczegółowo

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

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej dr inż. Paweł Czarnul pczarnul@eti.pg.gda.pl Architektury usług internetowych laboratorium

Bardziej szczegółowo

akademia androida Składowanie danych część VI

akademia androida Składowanie danych część VI akademia androida Składowanie danych część VI agenda 1. SharedPreferences. 2. Pamięć wewnętrzna i karta SD. 3. Pliki w katalogach /res/raw i /res/xml. 4. Baza danych SQLite. 5. Zadanie. 1. SharedPreferences.

Bardziej szczegółowo

MATERIAŁY POMOCNICZE DO ĆWICZENIA 3 Klasy i obiekty; atrybuty i metody

MATERIAŁY POMOCNICZE DO ĆWICZENIA 3 Klasy i obiekty; atrybuty i metody MATERIAŁY POMOCNICZE DO ĆWICZENIA 3 Klasy i obiekty; atrybuty i metody Java jest językiem obiektowym. Wartości typów innych niż proste są obiektami określonych klas. Obiekty stanowią instancje klas, których

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki Programowanie w Sieci Internet Blok 2 - PHP Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić Podstawy podstaw, czyli małe wprowadzenie do PHP, Podstawy

Bardziej szczegółowo

Komunikator internetowy w C#

Komunikator internetowy w C# PAŃSTWOWA WYśSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie Komunikator internetowy w C# autor: Artur Domachowski Elbląg, 2009 r. Komunikacja przy uŝyciu poczty internetowej

Bardziej szczegółowo

Multimedia JAVA. Historia

Multimedia JAVA. Historia Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania

Bardziej szczegółowo

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

Inynieria oprogramowania Lecture XXX. Java TM cz IV: IO. Bartosz Walter Inynieria oprogramowania Lecture XXX Java TM cz IV: IO Bartosz Walter Plan Klasa java.io.file Strumienie tekstowe Strumienie standardowe Properties Wprowadzenie pakiet java.io.*;

Bardziej szczegółowo