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/ 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("http://www.kis.p.lodz.pl/katedra/index.html"); 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","www.kis.p.lodz.pl","/katedra/index.html"); 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","www.kis.p.lodz.pl",80,"/katedra/index.html"); 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("http://www.kis.p.lodz.pl/katedra/pl/staff.html"); 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("http://www.google.pl/search?hl=pl&q=java&lr=#top"); 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("http://pkosla.kis.p.lodz.pl"); 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)http://www.kis.p.lodz.pl/~pkosla/ --> <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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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. 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ć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

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

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

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

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

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

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

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

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

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

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

Wykład 6 Dziedziczenie cd., pliki

Wykład 6 Dziedziczenie cd., pliki Wykład 6 Dziedziczenie cd., pliki Autor: Zofia Kruczkiewicz 1. Dziedziczenie cd. 2. Pliki - serializacja Zagadnienia 1. Dziedziczenie aplikacja Kalkultory_2 typu Windows Forms prezentująca dziedziczenie

Bardziej szczegółowo

Strumienie, pliki. Sortowanie. Wyjątki.

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

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

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

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) III RPC Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) 1. Koncepcja Aplikacja wywołanie procedury parametry wyniki wykonanie procedury wynik komputer klienta komputer serwera Zaletą takiego

Bardziej szczegółowo

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne import javax.swing.*; import java.util.*; public class Napis4 { String wynik = ""; static int ile_obiektow

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

Bardziej szczegółowo

Bezpieczne uruchamianie apletów wg

Bezpieczne uruchamianie apletów wg Bezpieczne uruchamianie apletów wg http://java.sun.com/docs/books/tutorial/security1.2/ Zabezpieczenia przed uruchamianiem apletów na pisanych przez nieznanych autorów 1) ograniczenie możliwości odczytywania,

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

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Dr inż. Zofia Kruczkiewicz wykład 4 Programowanie aplikacji internetowych, wykład 4 1 1. Zadania aplikacji rozproszonych obiektów

Bardziej szczegółowo

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

Sieci komputerowe. Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP Sieci komputerowe Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP Zadania warstwy transportu Zapewnienie niezawodności Dostarczanie danych do odpowiedniej aplikacji w warstwie aplikacji (multipleksacja)

Bardziej szczegółowo

MODEL WARSTWOWY PROTOKOŁY TCP/IP

MODEL WARSTWOWY PROTOKOŁY TCP/IP MODEL WARSTWOWY PROTOKOŁY TCP/IP TCP/IP (ang. Transmission Control Protocol/Internet Protocol) protokół kontroli transmisji. Pakiet najbardziej rozpowszechnionych protokołów komunikacyjnych współczesnych

Bardziej szczegółowo

Programowanie w Internecie. Java

Programowanie w Internecie. Java Programowanie w Internecie Java Autor: dr inż. Zofia Kruczkiewicz Literatura: L. Lemay, R. Cadenhead P. Naughton Krzysztof Barteczko Boone Barry Java 2 dla każdego Podręcznik Języka Programowania Java

Bardziej szczegółowo

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5 Politechnika Wrocławska Wydział Podstawowych Problemów Techniki Technologie sieciowe Sprawozdanie z labolatorium Lista 5 Autor: Piotr Kosytorz IIrokInf. indeks: 166174 Prowadzący: dr inż. Łukasz Krzywiecki

Bardziej szczegółowo

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

Bardziej szczegółowo

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

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego. Proxy (pełnomocnik) Cel: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego. Zastosowanie: Wszędzie tam, gdzie oczekujemy bardziej zaawansowanego odwołania do obiektu, niż zwykły

Bardziej szczegółowo

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy PODSTAWOWE ELEMENTY JĘZYKA JAVA TYPY DANYCH, OPERATORY I INSTRUKCJE 1. Definicja klasy, dziedziczenie, implementowanie metod interfejsów class nazwa_klasy //ciało klasy Klasa: przed słowem class moŝe wystąpić

Bardziej szczegółowo

Podstawowe typy serwerów

Podstawowe typy serwerów Podstawowe typy serwerów 1. Algorytm serwera. 2. Cztery podstawowe typy serwerów. iteracyjne, współbieżne, połączeniowe, bezpołączeniowe. 3. Problem zakleszczenia serwera. 1 Algorytm serwera 1. Utworzenie

Bardziej szczegółowo

Podstawy obiektowości

Podstawy obiektowości Podstawy obiektowości Zad. Zamówienie 1. Napisać program do obsługi zamówień. Program powinien składać się z dwóch klas: Zamowienie oraz Pozycja, przy czym każde zamówienie zawierać może jedną lub więcej

Bardziej szczegółowo

Programowanie aplikacji w architekturze Klient-Serwer - TCP

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

Bardziej szczegółowo

Programowanie Obiektowe (Java)

Programowanie Obiektowe (Java) 1. Kontenery w Javie 5 Wykład dziewiąty 1 import java.util.*; 2 3 class Element { 4 private int value; 5 6 public String tostring() { 7 return new Integer(value).toString(); 8 } 9 10 public Element(int

Bardziej szczegółowo

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java Aplikacje Internetowe Podstawy języka Java Najprostsza aplikacja class Hello { public static void main(string[] args) { System.out.println("Hello World!"); Komponenty Javy JRE Java Runtime Environment

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech BAZY DANYCH Obsługa bazy z poziomu języka PHP opracowanie: Michał Lech Plan wykładu 1. PHP - co to jest? 2. Bazy danych obsługiwane przez PHP 3. Podstawowe polecenia 4. Sesje 5. Przykład - dodawanie towaru

Bardziej szczegółowo

Serwer współbieżny połączeniowy

Serwer współbieżny połączeniowy Serwery współbieżne 1. Serwery współbieżne serwery połączeniowe, usuwanie zakończonych procesów, serwery bezpołączeniowe, 2. Jednoprocesowe serwery współbieżne. koncepcja i implementacja. 1 Serwer współbieżny

Bardziej szczegółowo

Zaawansowane aplikacje WWW - laboratorium

Zaawansowane aplikacje WWW - laboratorium Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w

Bardziej szczegółowo

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

Łukasz Przywarty Wrocław, r. Grupa: WT/N 11:15-14:00. Sprawozdanie z zajęć laboratoryjnych: OpenSSL - API Łukasz Przywarty 171018 Wrocław, 17.01.2013 r. Grupa: WT/N 11:15-14:00 Sprawozdanie z zajęć laboratoryjnych: OpenSSL - API Prowadzący: mgr inż. Mariusz Słabicki 1 / 5 1. Treść zadania laboratoryjnego W

Bardziej szczegółowo

156.17.4.13. Adres IP

156.17.4.13. Adres IP Adres IP 156.17.4.13. Adres komputera w sieci Internet. Każdy komputer przyłączony do sieci ma inny adres IP. Adres ten jest liczbą, która w postaci binarnej zajmuje 4 bajty, czyli 32 bity. W postaci dziesiętnej

Bardziej szczegółowo

Ćwiczenie 9 - Zaawansowane metody programowania w sieci komputerowej

Ćwiczenie 9 - Zaawansowane metody programowania w sieci komputerowej Ćwiczenie 9 - Zaawansowane metody programowania w sieci komputerowej Bezpieczne gniazda Poufna komunikacja przez otwarte medium, takie jak Internet, która ma uniemożliwiać podsłuch, bezwzględnie wymaga

Bardziej szczegółowo

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Wykorzystywanie parsera DOM w programach Java i PL/SQL Wykorzystywanie parsera DOM w programach Java i PL/SQL Maciej Zakrzewicz mzakrz@cs.put.poznan.pl http://www.cs.put.poznan.pl/~mzakrz/ Parser DOM Aplikacja DOM API Parser DOM Dokument XML Drzewo DOM Parser

Bardziej szczegółowo

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

Rozdział 7 Strumienie, operacje wejścia-wyjścia Rozdział 7 Strumienie, operacje wejścia-wyjścia 7.1 Strumienie 7.2 Standardowe obsługa wejścia-wyjścia - klasy InputStream oraz OutputStream 7.2.1 Obsługa wejścia klasa InputStream 7.2.2 Obsługa wejścia

Bardziej szczegółowo