Wykład 7 Tworzenie łącz w apletach, wątki, serializacja obiektów, gniazda
|
|
- Damian Wróblewski
- 7 lat temu
- Przeglądów:
Transkrypt
1 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 <HTML> <HEAD> </HEAD> <BODY BGCOLOR="000000"> <CENTER> <APPLET code = "P5_9.class" width = "500" height = "300" > <PARAM name = adres1 value = " <PARAM name = adres2 value = " </APPLET> </CENTER> </BODY> </HTML> import java.net.*; import java.awt.*; import java.applet.*; public class P5_9 extends Applet { String a, b; public void init() { public void paint(graphics g) { a = getparameter("adres1"); //pobieranie parametru adres1 z pliku html b = getparameter("adres2"); //pobieranie parametru adres2 z pliku html if (a == null) a = " if (b == null) b = " { URL load1 = new URL (a); // pobranie i wyświetlenie strony www o adresie a w bieżącym oknie przeglądarki getappletcontext().showdocument(load1); catch (MalformedURLException e) {System.out.println("Zly url "+a); { URL load2 = new URL (b); // pobranie i wyświetlenie strony www o adresie b w nowym oknie przeglądarki getappletcontext().showdocument(load2, "_blank"); catch (MalformedURLException e) {System.out.println("Zly url "+b); Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 1
2 Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 2
3 2. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego wątku Stos programu może być wykorzystywany przez wiele współbieżnych wątków programu Zablokowanie jednego z wątków nie zawiesza działania innych wątków Wznowienie działania wątku następuje od miejsca zawieszenia System Windows przydziela cyklicznie czas procesora wątkom w kolejności wynikającej z ich priorytetów (taka sytuacja występuje np. w komputerach jednoprocesorowych) Wiele działających wątków powoduje, że program działa asynchronicznie (nie ma pojedynczej pętli zdarzeń) Synchronizacja wykonywanych metod przez wątki jest możliwa dzięki monitorowi, który posiada każdy z obiektów. Dodanie słowa synchronized do oznaczenia nazwy metody powoduje, że jeśli jeden z wątków wykonuje taką metodę, to żaden z pozostałych wątków nie może wykonać innej synchronizowanej metody tego obiektu. Wątki mogą się porozumiewać za pomocą metod wait(), notify() i notifyall() wątek może wykonywać pewną metodę i po wykonaniu wait() czekać w niej, aż inny wątek nie zawiadomi go za pomocą metody notify() lub notifyall() o możliwości kontynuowania wstrzymanej metody Tworzenie wątków klasa Thread oraz interfejs Runnable Obiekt dziedziczący po klasie Thread może uruchomić nowy wątek, w którym może działać obiekt implementujący interfejs Runnable lub dziedziczący po klasie Thread, gdyż klasa Thread też implementuje interfejs Runnable (1 sposób) Obiekt działający w wątku musi implementować metodę run() (interfejs Runnable) Obiekt (wątek), który dziedziczy po klasie Thread lub który jest obiektem klasy Thread (wątek)jest związany z podstawowymi faktami: w czasie tworzenia tego wątku, do jego konstruktora przekazuje się obiekt implementujący interfejs Runnable (1 sposób) po uruchomieniu metody start() wątku zostaje automatycznie uruchomiona metoda run() obiektu wstawionego do wątku jeśli konstruktor obiektu typu Thread lub dziedziczącego po nim jest pusty, po wywołaniu jego metody start(), uruchamiana jest metoda run() tego obiektu, jako obiektu działającego w wątku (2 sposób). Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 3
4 import java.util.*; import java.io.*; class Watek1 implements Runnable { public void run() { { System.out.println("Watek potomny dziala"); Thread.sleep(4000); catch(interruptedexception e) { System.out.println("Przerwanie watku potomnego"); System.out.println("Watek potomny zakonczyl dzialanie"); public class p6_1 { void demo() { Thread watekglowny = Thread.currentThread(); System.out.println("Watek biezacy " + watekglowny); Watek1 obiekt = new Watek1(); Thread watekpotomny = new Thread(obiekt, "Watek potomny"); watekpotomny.start(); { Thread.sleep(6000); catch(interruptedexception e) { System.out.println("Przerwanie watku glownego"); System.out.println("Watek glowny zakonczyl dzialanie"); public static void main (String argd[]) { p6_1 p = new p6_1 (); p.demo(); Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 4
5 Synchronizacja wątków słowo kluczowe synchronized 1) Przykład brak synchronizacji wywołania metody wyswietl import java.util.*; import java.io.*; import java.lang.*; class Zasob { void wyswietl(string m, int n) { System.out.print("< "+m); { Thread.sleep(4000); catch(exception e) { System.out.println(n+">"); class Watek2 implements Runnable { String s; Zasob z; int num; public Watek2(Zasob zasob, String lan, int n) { s=lan; z= zasob; num=n; public void run() { z.wyswietl(s, num); public class p6_2 { void demo() { Zasob zasob = new Zasob(); Watek2 obiekt1 = new Watek2(zasob, "Watek1 ",1); Thread watek1 = new Thread(obiekt1); watek1.start(); Watek2 obiekt2 = new Watek2(zasob, "Watek2 ",2); Thread watek2 = new Thread(obiekt2); watek2.start(); Watek2 obiekt3 = new Watek2(zasob, "Watek3 ",3); Thread watek3 = new Thread(obiekt3); watek3.start(); public static void main (String argd[]) { p6_2 p = new p6_2 (); p.demo(); Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 5
6 2) Przykład synchronizacja wywołania metody wyswietl import java.util.*; import java.io.*; import java.lang.*; class Zasob1 { synchronized void wyswietl(string m, int n) { System.out.print("< "+m); { Thread.sleep(4000); catch(exception e) { System.out.println(n+">"); class Watek2 implements Runnable { String s; Zasob1 z; int num; public Watek2(Zasob1 zasob, String lan, int n) {s=lan; z= zasob; num=n; public void run() { z.wyswietl(s,num); public class p6_3 { void demo() { Zasob1 zasob = new Zasob1(); Watek2 obiekt1 = new Watek2(zasob, "Watek1 ",1); Thread watek1 = new Thread(obiekt1); watek1.start(); Watek2 obiekt2 = new Watek2(zasob, "Watek2 ",2); Thread watek2 = new Thread(obiekt2); watek2.start(); Watek2 obiekt3 = new Watek2(zasob, "Watek3 ",3); Thread watek3 = new Thread(obiekt3); watek3.start(); public static void main (String argd[]) { p6_3 p = new p6_3 (); p.demo(); Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 6
7 Porozumiewanie się wątków metody wait, notify notifyall 1) Przykład braku zachowania kolejności wykonania metody wyswietl przez 2 wątki import java.util.*; import java.io.*; import java.lang.*; class Zasob2 { int num; synchronized void wyswietl(string m, int n) { System.out.print("< "+m); num = n; System.out.println(num+">"); class Watek3 implements Runnable { String s; Zasob2 z; int num; public Watek3(Zasob2 zasob, String lan, int n) {s=lan; z= zasob; num=n; public void run() { while (true) { z.wyswietl(s, num++); { Thread.sleep(400); catch(exception e) { /*koniec run*/ /*koniec Watek3*/ class Watek4 extends Watek3 { public Watek4(Zasob2 zasob, String lan, int n) { super(zasob, lan, n); public void run() { while (true) { z.wyswietl(s,num); { Thread.sleep(1000); catch(exception e) { /*koniec run*/ /*koniec Watek3*/ Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 7
8 public class p6_4 { void demo() { Zasob2 zasob = new Zasob2(); Watek3 obiekt1 = new Watek3(zasob, "Watek1 ", 1); Thread watek3 = new Thread(obiekt1); watek3.start(); Watek4 obiekt2 = new Watek4(zasob, "Watek2 ", 2); Thread watek4 = new Thread(obiekt2); watek4.start(); public static void main (String argd[]) { p6_4 p = new p6_4 (); p.demo(); Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 8
9 2) Przykład zachowania kolejności wykonania metody wyswietl przez 2 wątki Dwie metody wyswietlx wzajemnie się informują, który wątek ostatnio ją wywoływał, stąd wywołanie metody wait() powoduje automatyczne wstrzymanie wykonania bieżącego wątku, jeśli dana metoda jako ostatnia była przez niego wykonana (testowanie składowej num: num==2 oznacza, że obiekt2 typu Watek6 ostatnio wykonał metodę wyswietl2, num>2 oznacza, że obiekt1 typu Watek5 jako ostatni wykonał metodę wyswietl1) Obiekt2 typu Wątek6 wykonuje metodę wyswietl2, gdy num!=2 (czyli po Watek5) i ustawia w zmiennej num wartość 2 (Wątek6) i wywołuje metodę notify (lub notifyall()), która wznawia wykonanie metody wyswietl1 dla obiektu1 typu Watek5 lub obiekt1 typu Watek5 wykonuje metodę wyswietl1, gdy wartość num==2 (czyli po Watek6) i ustawia w zmiennej num wartość bieżąca >2 (Wątek5) i wywołuje metodę notify (lub notifyall()), która wznawia wykonanie metody wyswietl2 dla obiektu2 typu Watek6 import java.util.*; import java.io.*; import java.lang.*; class Zasob3 { int num=3; synchronized void wyswietl1(string m, int n) { if (num!=2) { //System.out.println("wait1:" +num+" "+n); wait(); catch(interruptedexception e) { System.out.print("< "+m); num = n; System.out.println(num+">"); //System.out.println("notify1:" +num+" "+n); notify(); synchronized void wyswietl2( String m,int n ) { if (num == 2) { //System.out.println("wait2:" +num+" "+n); wait(); catch(interruptedexception e) { System.out.print("< "+m); num = n; System.out.println(num+">"); //System.out.println("notify2:" +num+" "+n); notify(); Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 9
10 class Watek5 implements Runnable { String s; Zasob3 z; int num; public Watek5(Zasob3 zasob, String lan, int n) { s = lan; z = zasob; num = n; public void run() { while (true) { z.wyswietl1(s, num++); { Thread.sleep(400); // wylaczenie opoznienia w drugim eksperymencie catch(exception e) { class Watek6 extends Watek5 { public Watek6(Zasob3 zasob, String lan, int n) { super(zasob, lan, n); public void run() { while (true) {z.wyswietl2(s, num); { Thread.sleep(1000); // wylaczenie opoznienia w drugim eksperymencie catch(exception e) { public class p6_5 { void demo() { Zasob3 zasob = new Zasob3(); Watek5 obiekt1 = new Watek5(zasob, "Watek1 ", 3); Thread watek5 = new Thread(obiekt1); watek5.start(); Watek6 obiekt2 = new Watek6(zasob, "Watek2 ", 2); Thread watek6 = new Thread(obiekt2); watek6.start(); public static void main (String argd[]) { p6_5 p = new p6_5 (); p.demo(); Podsumowanie: wywołanie metody wait przez dany obiekt bieżącego wątku powoduje automatyczne przerwanie wykonywania tego wątku i również automatyczne wznowienie go po wywołaniu metody notify (lub notifyall) przez inną synchronizowaną metodę tego samego obiektu wykonaną przez inny wątek. W przypadku wielu przerwanych wątków uruchamiany jest ten, który pierwszy został przerwanym (notify); jeśli wywołano notifyall wątki są wznawiane według ich priorytetów. Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 10
11 Eksperyment 1 Działanie metod run, które po zakończeniu metod wyswietlx wchodzą w stan Thread.sleep(1000) oraz Thread.sleep(400) Eksperyment 2 Działanie metod run, które po zakończeniu metod wyswietlx nie wchodzą w stan Thread.sleep(1000) oraz Thread.sleep(400) Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 11
12 3. Serializacja obiektów Jest to mechanizm szeregowego zapisu do pliku związanego ze strumieniem wyjściowym ciągu bajtów po wykonaniu konwersji obiektu do postaci szeregowej i Odczytu szeregowego ciągu bajtów z pliku związanego ze strumieniem wejściowym i dokonanie konwersji do postaci danej (obiektu, typu podstawowego: int, float itp.) Mechanizm ten pozwala zachować całe obiekty w pliku po zakończeniu programu Obiekty zapisywane do pliku muszą implementować pusty interfejs Serializable (obiekty są serializowane) Obiekty z zagnieżdżonymi obiektami są w całości zapisywane do pliku pod warunkiem, że zagnieżdżone obiekty też są serializowane Obiekty zagnieżdżone w serializowanych klasach mogą być pomijane przy zapisie do strumienia, jeśli to konieczne, za pomocą słowa kluczowego transient Np. public transient String s = Kowalski ; Procedura korzystania ze strumieni obiektowych powiązanych z plikami binarymi Aby utworzyć plik: 1) Należy utworzyć obiekt (np. typu FileOutputStream), powiązany ze plikiem danych binarnych (np. "Wiadomosc.obj"); FileOutputStream plikobiektow = new FileOutputStream("Wiadomosc.obj"); 2) W celu utworzenia wyjściowego strumienia obiektowego powiązanego z obiektem związanym ze źródłem danych np. typu FileOutputStream należy utworzyć obiekt klasy ObjectOutputStream ObjectOutputStream strumienobiektow=new ObjectOutputStream (plikobiektow); 3) obiekty dziedziczące po Object i implementujace interfejs Serializable są zapisywane do pliku w postaci szeregowej za pomocą metody void writeobject(object ob) Dalej podano część metod strumienia obiektów do zapisu różnych danych do pliku: 4) Pojedyncze bajty mogą być zapisywane do pliku za pomocą metody: void write(int b) 5) Całe ciągi bajtów mogą być zapisywane do pliku za pomocą metody: void write(byte[]cbuf) metoda, która czyta zawartosc tablicy bajtów i zapisuje ją do strumienia (buf.length bajtów) Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 12
13 6) Całe ciągi bajtów mogą być zapisywane do pliku za pomocą metody: void write(byte[] cbuf, int off, int len) metoda, która czyta z tablicy cbuf od indeksu off liczbę len bajtów i zapisuje do pliku 7) void writeboolean(boolean v) zapisuje do pliku 1-bajtową wartość 8) void writebyte(int v) zapisuje do pliku 1-bajtową wartość 9) void writechar(int v) zapisuje znak jako 2-bajtową wartość pierwszy zapisywany jest starszy bajt (Unicode) 10) void writedouble(double v) zapisuje 8-bajtową wartość do pliku 11) void writefloat(float v) zapisuje 4-bajtową wartość do pliku 12) void writeint(int v) zapisuje 4 bajty do pliku 13) void writelong(long v) zapisuje 8 bajtów do pliku 14) void writeshort(int v) zapisuje 2 bajty do pliku Aby odczytać plik: 1) Należy utworzyć obiekt (np. typu FileInputStream), powiązany ze plikiem danych binarnych (np. "Wiadomosc.obj"); FileInputStream plik = new FileInputStream("Wiadomosc.obj"); 2) W celu odczytu obiektow pochodzących z obiektu powiązanego ze źródłem danych np. typu FileInputStream należy utworzyć obiekt klasy ObjectInputStream ObjectInputStream bufor = new ObjectInputStream (plik); 3) Odczytu obiektów z strumienia należy wykonać za pomocą metody Object readobject() Dalej podano niektóre metody strumienia obiektów do odczytu danych z pliku: 4) Pojedyncze bajty mogą być odczytywane z pliku za pomocą metody: int read() 5) Całe ciągi bajtów mogą być odczytywane z pliku za pomocą metody: int read(byte[] cbuf, int off, int len) metoda, która czyta plik i zapisuje do tablicy cbuf od indeksu off liczbę len bajtów i zwraca przez return liczbę faktycznie odczytanych bajtów 6) boolean readboolean() czyta z pliku 1 bajt i wraca wartość true lub false 7) byte readbyte() czyta z pliku 1 bajt i zwraca wartość typu byte 8) char readchar() czyta 1 znak (2 bajty ) i zwraca 1 znak 9) double readdouble() czyta 8 bajtów z pliku i zwraca wartość double Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 13
14 10) float readfloat() czyta 4 bajtów z pliku i zwraca wartość float 11) int readint() czyta 4 bajty z pliku i zwraca wartość typu int 12) long readlong() czyta 8 bajtów z pliku i zwraca wartość typu long 13) short readshort() czyta 2 bajty z pliku i zwraca wartość typu short 14) Po zapisie i odczycie strumień obiektów należy zamknąć metodą close() import java.io.*; import java.util.*; class Wiadomosc implements Serializable { String dane; Date data; static String westring() { InputStreamReader wejscie = new InputStreamReader( System.in ); BufferedReader bufor = new BufferedReader( wejscie ); System.out.print("Podaj wiadomosc: "); { return bufor.readline(); catch (IOException e) { System.err.println("Blad IO String"); return ""; public void zapiszwiadomosc() { data = new Date(); System.out.println(data); dane =westring(); public void odczytajwiadomosc() { System.out.println(data); System.out.println(dane); Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 14
15 public class p6_6 { static void Zapiszobiektydopliku() { Wiadomosc wiadomosc = new Wiadomosc(); wiadomosc.zapiszwiadomosc(); { FileOutputStream plikobiektow = new FileOutputStream ("Wiadomosc.obj"); ObjectOutputStream strumienobiektow = new ObjectOutputStream (plikobiektow); strumienobiektow.writeobject(wiadomosc); strumienobiektow.close(); System.out.println("Obiekt wiadomosc zostal zapisany do pliku"); catch (IOException e) { System.out.println ("Blad zapisu pliku obiektowego"+e); static void Odczytajobiektyzpliku() { Wiadomosc wiadomosc = null; { FileInputStream plikobiektow = new FileInputStream ("Wiadomosc.obj"); ObjectInputStream strumienobiektow = new ObjectInputStream (plikobiektow); wiadomosc = (Wiadomosc)strumienobiektow.readObject(); System.out.println("Obiekt wiadomosc zostal odczytany z pliku"); if (wiadomosc!= null) wiadomosc.odczytajwiadomosc(); strumienobiektow.close(); catch (Exception e) { System.out.println ("Blad odczytu pliku obiektowego"+e); public static void main(string[] args) { Zapiszobiektydopliku(); Odczytajobiektyzpliku(); Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 15
16 4. Obiekty sieciowe 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 protokołów i odpowiada siedmiowarstwowemu modelowi ISO/OSI (Open Systems Interconnection) Warstwa ISO/OSI TCP/IP Uwagi 7 Aplikacji 6 Prezentacji SMTP, HTTP, FTP, RPC, TELNET 5 Sesji DNS, LDAP 4 Transportowa TCP/UDP 3 Sieciowa 2 Łącza danych 1 Fizyczna IP (Internet), ICMP ARP, RARP, LLC 802.2, Ethernet Udostępnia procesom aplikacyjnym APs (Application Processes) dostęp do połączenia OSI, czyli: Zasoby przetwarzające informację Zasoby komunikacyjne Ujednolicenie formatu przesyłanych danych (opis struktur danych-syntaktyka oraz sposobem kodowania reprezentacją bitową w czasie transferu) Jest odpowiedzialna za zapewnienie uporządkowanej wymiany danych miedzy segmentami warstwy prezentacji i korzysta z usług warstwy transportowej Zapewnia poprawność przesyłanych danych między systemami końcowymi Nadzorowanie wiadomości przesyłanych miedzy dwoma komputerami poprzez sieć Ustanawianie połączenia, nadzór nad bezbłędnym transferem bitów Przesyłanie strumienia bitów za pomocą medium fizycznego Protokół HTTP zastosowany do czytania zasobów www wskazanych za pomocą URL (Uniform Resource Locator) czyli danych z pliku w formacie HTML (HyperText Markup Language), musi korzystać z niezawodnego kanału komunikacji punktpunkt, jaki zapewnia protokół połączeniowy TCP, gdyż otrzymywane dane muszą wystąpić w tej samej kolejności, w której były przesyłane, Protokół UDP, bezpołączeniowy protokół przesyłania niezależnych pakietów danych (datagramów) pomiędzy dwoma aplikacjami w sieci, może być wykorzystany do Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 16
17 programów typu ping itp. nie ma pewności, czy dany datagram nieuszkodzony dotrze do określonego komputera oraz czy komputer czeka nadal na odpowiedź. Komputery w sieci są identyfikowane przez 32-bitowe adresy IP, a procesy działające na tych komputerach są identyfikowane poprzez 16-bitowe numery portów (port reprezentuje kolejkę danych, które mają być dostarczane do danego procesu wykonującego pewien program). Program wykorzystujący protokół HTTP ma przydzielony domyślnie port o numerze 80. Programy odbierają lub wysyłają dane poprzez związane z numerami portów gniazda (sockets). Gniazdo jest definiowane przez warstwę transportową modelu ISO/OSI. Gniazdo jest końcowym punktem połączenia między programami wykonywanymi na komputerach sieciowych w systemie klient-serwer. Gniazdo pełni rolę interfejsu programowego umożliwiającego aplikacjom dostęp do protokołów TCP i UDP i wymianę danych poprzez sieć pracującą pod kontrolą protokołów TCP/IP. Program serwera wykonywany na konkretnej maszynie ma przypisane do pewnego numeru portu gniazdo (typu ServerSocket), poprzez które "nasłuchuje" za pomocą metody accept klasy ServerSocket ewentualnego żądania nawiązania łączności przez klienta (gniazdo typu Socket). Jest to możliwe, jeśli klient (program klienta) zna adres komputera sieciowego, na którym jest wykonywany serwer oraz numer portu, do którego serwer jest dołączony i utworzy odpowiednie gniazdo typu Socket (związane z numerem portu i adresem serwera), poprzez które może prowadzić komunikację z serwerem. Serwer akceptuje połączenie, a następnie tworzy dla klienta nowe gniazdo (typu Socket) ze zmiennymi wskazującymi na obiekty klas typu InputStream i OutputStream. W pakiecie java.net klasy Socket i ServerSocket służą do komunikacji w oparciu o protokół połączeniowy TCP W pakiecie java.net klasy DatagramSocket, DatagramPacket oraz MulticastSocket są wykorzystywane do komunikacji UDP. W pakiecie java.net klasy klasy: URL oraz URLConnection i URLEncoder służą do nawiązania łączności z zasobami www. Komunikacja w sieci za pomocą klas z pakietu java.net, opiera się między innymi na implementacji gniazd. Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 17
18 Przykład1 - Aplikacja typu Klient-Serwer 1.1.Start serwera 1.2. Start klienta 1.3. Reakcja serwera import java.io.*; import java.util.*; public class Wiadomosc implements Serializable { String dane; Date data; public void zapiszwiadomosc() { data = new Date(); dane ="Wyslij"; public void odczytajwiadomosc() { System.out.println(data); System.out.println(dane); Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 18
19 import java.net.*; //ten program należy uruchomić jako pierwszy import java.io.*; public class serwer2 implements Runnable { private int sport; private ServerSocket serwer; private Socket gniazdo_klienta; private ObjectOutputStream wyjscie; private ObjectInputStream wejscie; private String host; private Wiadomosc wiadomosc; public serwer2(int port_, String host_) { sport = port_; host=host_; { serwer = new ServerSocket(sPort); catch(ioexception e) { System.out.println(e); public void run() { System.out.println("Serwer startuje na hoscie "+host); { { { gniazdo_klienta = serwer.accept(); catch (IOException e) { System.out.println("Nie mozna polaczyc sie z klientem "+e); System.exit(1); wyjscie = new ObjectOutputStream(gniazdo_klienta.getOutputStream()); wyjscie.flush(); wejscie = new ObjectInputStream(gniazdo_klienta.getInputStream()); wiadomosc = (Wiadomosc) wejscie.readobject(); System.out.println("Jaka wiadomosc odebral serwer od klienta:"); wiadomosc.odczytajwiadomosc(); wejscie.close(); wyjscie.close(); gniazdo_klienta.close(); catch (Exception e) { System.out.println("Wyjatek serwera "+e); public static void main(string args[]) throws Exception { String host_ = InetAddress.getLocalHost().getHostName(); int Port = 5000; serwer2 s2 = new serwer2(port, host_); Thread t = new Thread(s2); t.start(); Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 19
20 import java.net.*; import java.io.*; //ten program należy uruchomić jako drugi public class klient2 implements Runnable { private int port; private Socket gniazdo_klienta; private ObjectOutputStream wyjscie; private ObjectInputStream wejscie; private String host; private Wiadomosc wiadomosc; klient2(string host_, int port_) { host = host_; port = port_; public void run() { {gniazdo_klienta = new Socket (host,port); wejscie = new ObjectInputStream(gniazdo_klienta.getInputStream()); wyjscie = new ObjectOutputStream(gniazdo_klienta.getOutputStream()); wyjscie.flush(); System.out.println("Klient startuje na hoscie "+ InetAddress.getLocalHost().getHostName()); wiadomosc = new Wiadomosc(); wiadomosc.zapiszwiadomosc(); System.out.println("Co wysyla klient: "); wiadomosc.odczytajwiadomosc(); wyjscie.writeobject(wiadomosc); gniazdo_klienta.close(); wyjscie.close(); wejscie.close(); catch (Exception e) { System.out.println("Wyjatek klienta "+e); public static void main(string args[]) throws Exception { //String s = InetAddress.getLocalHost().getHostName(); String s = InetAddress.getByName("kloc").getHostName(); klient2 k2= new klient2(s,5000); Thread t = new Thread(k2); t.start(); Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 20
21 Przykład2 - Aplikacja typu Klient-Serwer import java.net.*; import java.io.*; //ten program należy uruchomić jako pierwszy public class serwer2 implements Runnable { private int sport; private ServerSocket serwer; private Socket s; private ObjectOutputStream output; private ObjectInputStream input; private String host,m,m1; public serwer2(int port_, String host_) { sport = port_; host=host_; { serwer = new ServerSocket(sPort); catch(ioexception e) { System.out.println(e); public void run() { System.out.println("Serwer startuje na hoscie "+host); while (true) { { { s = serwer.accept(); catch (IOException e) { System.out.println("Nie mozna polaczyc sie z klientem "+e); System.exit(1); //przerwanie pracy serwera nie jest zalecane w praktyce output = new ObjectOutputStream(s.getOutputStream()); output.flush(); input = new ObjectInputStream(s.getInputStream()); while(true) { m=(string) input.readobject(); System.out.println("Odebrano wiadomosc od klienta: "+ m +"\n"); if (m.equals("czesc")) break; m1=westring("podaj wiadomosc dla klienta: "); output.writeobject((object) m1); input.close(); output.close(); s.close(); catch (Exception e) {System.out.println("Wyjatek serwera "+e); Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 21
22 static String westring(string menu) { InputStreamReader wejscie = new InputStreamReader( System.in ); BufferedReader bufor = new BufferedReader( wejscie ); System.out.print(menu); { return bufor.readline(); catch (IOException e) { System.err.println("Blad IO String"); return ""; public static void main(string args[]) throws Exception { //klasa InetAddress pobiera adres IP i na jego podstawie tworzy adres internetowy String host_ = InetAddress.getLocalHost().getHostName(); int Port = 5000; serwer2 s2 = new serwer2(port, host_); Thread t = new Thread(s2); t.start(); Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 22
23 import java.net.*; import java.io.*; public class klient2 implements Runnable { private int port; private Socket s; private ObjectOutputStream output; private ObjectInputStream input; private String host, m, m1; klient2(string host_, int port_) { host = host_; port = port_; //ten program należy uruchomić jako drugi public void run() { { s = new Socket (host,port); input = new ObjectInputStream(s.getInputStream()); output = new ObjectOutputStream(s.getOutputStream()); output.flush(); System.out.println("Klient startuje na hoscie "+ InetAddress.getLocalHost().getHostName()); m = westring("przedstaw sie: "); output.writeobject(m); do { m=(string) input.readobject(); System.out.println("\n"+"Dane odebrane od serwera: "+m); m1=westring("podaj wiadomosc dla serwera: "); output.writeobject(m1); while(!m1.equals("czesc")); s.close(); output.close(); input.close(); catch (Exception e) { System.out.println("Wyjatek klienta "+e); static String westring(string menu) {InputStreamReader wejscie = new InputStreamReader( System.in ); BufferedReader bufor = new BufferedReader( wejscie ); System.out.print(menu); {return bufor.readline(); catch (IOException e) {System.err.println("Blad IO String"); return ""; Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 23
24 public static void main(string args[]) throws Exception { //tutaj przyjęto, że serwer jest na tym samym hoście, co klient String s = InetAddress.getLocalHost().getHostName(); klient2 k2= new klient2(s,5000); Thread t = new Thread(k2); t.start(); Autor: Zofia Kruczkiewicz, Programowanie w Internecie, wykład 7 24
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
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.
Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1
Wątki 1. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego
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
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
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
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
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
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
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
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
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
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
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
Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().
Wątki Streszczenie Celem wykładu jest wprowadzenie do obsługi wątków w Javie. Czas wykładu 45 minut. Definiowanie wątków jako klas potomnych Thread Nadpisanie metody run(). class Watek extends Thread public
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ół
Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1
Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie
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,
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
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
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
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
Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Procesy i wątki Proces posiada samodzielne środowisko wykonawcze. Proces posiada własny zestaw podstawowych zasobów w czasie wykonywania; W szczególności, każdy proces ma własną przestrzeń pamięci. W uproszczeniu
Współbieżność w środowisku Java
Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych
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,
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)
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
Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy. Tworzenie łącz w apletach
Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy. Tworzenie łącz w apletach Przykład 1 a) Program ProstyAplet2.class uruchomiony jako aplet w przeglądarce
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
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
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
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,
Język Java wątki (streszczenie)
Programowanie współbieżna Język Java wątki (streszczenie) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Języka Java wątki Autor:
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
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
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
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)
Komunikatory typu TCP/IP lab2. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych
Komunikatory typu TCP/IP lab2 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych Zadanie1 - klient wysyła jeden komunikat (typu String) do serwera i kończy swoje istnienie, a serwer go odbiera
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
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.
Java. Programowanie Obiektowe Mateusz Cicheński
Java Programowanie Obiektowe Mateusz Cicheński Wielowątkowość Proces a wątek? Thread vs Runnable sleep(), interrupt(), join() Problemy wielowątkowości Obiekty niemodyfikowalne (immutable) Serializacja
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
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ąć
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
Języki i Techniki Programowania II. Wykład 7. Współbieżność 1
Języki i Techniki Programowania II Wykład 7 Współbieżność 1 Programy, Procesy, Wątki Program to zestaw instrukcji do wykonania, dane do przetworzenia, mechanizmy sterujące (stos) Proces w komputerze to
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
Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003
Obliczenia równoległe i rozproszone w JAVIE Michał Kozłowski 30 listopada 2003 Wątki w JAVIE Reprezentacja wątków jako obiektów Uruchamianie i zatrzymywanie wątków Realizacja wątków Ograniczenia Mechanizmy
1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4
Spis treści 1 Wątki 1 2 Tworzenie wątków 1 3 Synchronizacja 3 4 Dodatki 3 5 Algorytmy sortowania 4 6 Klasa Runnable 4 Temat: Wątki Czym są wątki. Grafika. Proste animacje. Małe podsumowanie materiału.
Aplikacje w Javie- wykład 11 Wątki-podstawy
1 Aplikacje w Javie- wykład 11 Wątki-podstawy Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/ http://docs.oracle.com/javase/9/docs/
Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017
Wykład 8 10 maj 2017 Współbieżność Watki w JAVA-ie Współbieżność może być realizowana na poziomie systemu operacyjnego (procesy) lub na poziomie aplikacji (watki). W JAVA-ie powszechnie stosuje się watki.
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
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
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
Stos protokołów TCP/IP (ang. Transmission Control Protocol/Internet Protocol)
Stos protokołów TCP/IP (ang. Transmission Control Protocol/Internet Protocol) W latach 1973-78 Agencja DARPA i Stanford University opracowały dwa wzajemnie uzupełniające się protokoły: połączeniowy TCP
Programowanie Sieciowe 1
Programowanie Sieciowe 1 dr inż. Tomasz Jaworski tjaworski@iis.p.lodz.pl http://tjaworski.iis.p.lodz.pl/ Cel przedmiotu Zapoznanie z mechanizmem przesyłania danych przy pomocy sieci komputerowych nawiązywaniem
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
Kurs programowania. Wykład 8. Wojciech Macyna
Wykład 8 Program bez watków, jeden procesor, trzy zadania Program z watkami, jeden procesor, trzy zadania Procesory wielordzeniowe, każde zadanie na osobnym procesorze Trzy zadania uruchomione w watkach
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
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
Podstawy współbieżności
Podstawy współbieżności Algorytmy i struktury danych. Wykład 6. Rok akademicki: 2010/2011 Od koncepcji współbieżności do systemów rozproszonych Współbieżnośd rozważany na poziomie koncepcyjnym sposób realizacji
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ć
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
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:
1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();
1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {; static public void m2() {; void abstract m3(); default static void m4() {; a) Poprawnie zadeklarowano metodę m1() b) Poprawnie
Programowanie sieciowe
Programowanie sieciowe Wykład 4: Java sieciowa mgr inŝ. Paweł Kośla mgr Marcin Raniszewski Łódź, 2009 1 Plan wykładu Przegląd java.net InetAddress URL Socket klient TCP ServerSocket serwer TCP 2 Literatura
Protokoły sieciowe - TCP/IP
Protokoły sieciowe Protokoły sieciowe - TCP/IP TCP/IP TCP/IP (Transmission Control Protocol / Internet Protocol) działa na sprzęcie rożnych producentów może współpracować z rożnymi protokołami warstwy
Język Java wątki (streszczenie)
Programowanie współbieŝna Język Java wątki (streszczenie) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Podstawowe pojęcia: procesy
JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.
JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod
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,
Tworzenie i wykorzystanie usług
Strona 1 Co to jest usługa w systemie Android? Usługi HTTP Obsługa wywołania HTTP GET Obsługa wywołania HTTP POST Obsługa wieloczęściowego wywołania HTTP POST Usługi lokalne Usługi zdalne Tworzenie usługi
Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych
Protokół JDBC współpraca z relacyjnymi bazami danych lab4 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych Zadanie1 Połączenie z bazą danych travel systemu bazodanowego Derby (metoda void
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
Sieci Komputerowe. Wykład 1: TCP/IP i adresowanie w sieci Internet
Sieci Komputerowe Wykład 1: TCP/IP i adresowanie w sieci Internet prof. nzw dr hab. inż. Adam Kisiel kisiel@if.pw.edu.pl Pokój 114 lub 117d 1 Kilka ważnych dat 1966: Projekt ARPANET finansowany przez DOD
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
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
Mechanizmy pracy równoległej. Jarosław Kuchta
Mechanizmy pracy równoległej Jarosław Kuchta Zagadnienia Algorytmy wzajemnego wykluczania algorytm Dekkera Mechanizmy niskopoziomowe przerwania mechanizmy ochrony pamięci instrukcje specjalne Mechanizmy
Sieci Komputerowe Modele warstwowe sieci
Sieci Komputerowe Modele warstwowe sieci mgr inż. Rafał Watza Katedra Telekomunikacji AGH Al. Mickiewicza 30, 30-059 Kraków, Polska tel. +48 12 6174034, fax +48 12 6342372 e-mail: watza@kt.agh.edu.pl Wprowadzenie
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
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
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
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
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
Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1
Obiektowe programowanie rozproszone Java RMI Krzysztof Banaś Systemy rozproszone 1 Java RMI Mechanizm zdalnego wywołania metod Javy (RMI Remote Method Invocation) posiada kilka charakterystycznych cech,
1 Atrybuty i metody klasowe
1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich
Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak
Wykład 3 / Wykład 4 Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak 1 Wprowadzenie do Modułu 3 CCNA-E Funkcje trzech wyższych warstw modelu OSI W jaki sposób ludzie wykorzystują
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
Języki i metody programowania Java INF302W Wykład 2 (część 1)
Języki i metody programowania Java INF302W Wykład 2 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 1 Struktura wykładu 1. Identyfikacja
Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej
Politechnika Łódzka Instytut Systemów Inżynierii Elektrycznej Laboratorium komputerowych systemów pomiarowych Ćwiczenie 7 Wykorzystanie protokołu TCP do komunikacji w komputerowym systemie pomiarowym 1.
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
Protokoły sieciowe model ISO-OSI Opracował: Andrzej Nowak
Protokoły sieciowe model ISO-OSI Opracował: Andrzej Nowak OSI (ang. Open System Interconnection) lub Model OSI to standard zdefiniowany przez ISO oraz ITU-T, opisujący strukturę komunikacji sieciowej.
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
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
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
WSPÓŁBIEŻNOŚĆ. MATERIAŁY:
WSPÓŁBIEŻNOŚĆ ZAGADNIENIA: procesy, wątki, synchronizacja, synchronizacja w Java 5.0 blokady, egzekutory, zbiory wątków MATERIAŁY: http://docs.oracle.com/javase/tutorial/essential/concurrency/ HTTP://USERS.UJ.EDU.PL/~CIESLA/
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
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
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
Aplikacje RMI Lab4
Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Lab4 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych 1 1. Koncepcja budowy aplikacji RMI (aplikacja rozproszonych
1. Co można powiedzieć o poniższym kodzie (zakładając, że znajduje się on w jednym pliku A.java)?
1. Co można powiedzieć o poniższym kodzie (zakładając, że znajduje się on w jednym pliku A.java)? public class A { public int i; { i++; System.out.print(i); public static void main(string[] args) { A a1