Programowanie z wykorzystaniem gniazd
|
|
- Edyta Kaczmarczyk
- 8 lat temu
- Przeglądów:
Transkrypt
1 Plan wykładu 1. Programowanie z wykorzystaniem gniazd usługa TIME, usługa ECHO, 2. Popularne aplikacje TCP/IP poczta elektroniczna cz. 1 protokół SMTP, 1
2 Programowanie z wykorzystaniem gniazd Utworzenie gniazda: int socket (int domain, int type, int protocol) domain rodzina protokołów używana do komunikacji w sieci, zdefniowana w pliku <sys/socket.h> np.: PF_UNIX, PF_LOCAL, PF_INET, PF_INET6, PF_IPX. type rodzaj komunikacji np.: SOCK_STREAM, SOCK_DGRAM, SOCK_RDM. protocol protokół transmisji wykorzystywany przez gniazdo. Wartość zwracana: deskryptor gniazda lub -1 w przypadku błędu. Pliki nagłówkowe <sys/socket.h>, <sys/types.h>. 2
3 Programowanie z wykorzystaniem gniazd Połączenie poprzez gniazdo: int connect (int sock, const struct sockaddr *serv_addr, int len) sock deskryptor gniazda uzyskany funkcją socket. serv_addr wskaźnik do struktury opisującej punk docelowy połączenia. len długość struktury wskazywanej przez serv_addr. Wartość zwracana: 0 w przypadku powodzenia, -1 w przypadku błędu. Pliki nagłówkowe <sys/socket.h>, <sys/types.h>. 3
4 Programowanie z wykorzystaniem gniazd Zamknięcie połączenia (gniazda): int shutdown (int sock, int how) sock deskryptor gniazda uzyskany funkcją socket. how sposób zamknięcia połączenia np.: SHUT_RD, SHUT_WR, SHUT_RDWR. Wartość zwracana: 0 w przypadku powodzenia, -1 w przypadku błędu. Pliki nagłówkowe <sys/socket.h>. 4
5 Programowanie z wykorzystaniem gniazd #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <errno.h> #include <string.h> int connectsock(char *host, char *service, char *protocol){ struct hostent *phe; struct servent *pse; struct protoent *ppe; struct sockaddr_in sin; int type, s; bzero((char*) &sin, sizeof(sin)); sin.sin_family = AF_INET; 5
6 Programowanie z wykorzystaniem gniazd if (pse = getservbyname(service, protocol)){ sin.sin_port = pse->s_port; else if ((sin.sin_port = htons((u_short)atoi(service)))==0){ fprintf(stderr, "nieznana usluga: %s\n", service); return -1; if (phe = gethostbyname(host)){ bcopy(phe->h_addr, (char *) &sin.sin_addr, phe->h_length); else if ((sin.sin_addr.s_addr = inet_addr(host))==inaddr_none){ fprintf(stderr, "nieznany host: %s\n", host); return -1; if ((ppe = getprotobyname(protocol))==null){ fprintf(stderr, "nieznany protokol: %s\n", protocol); return -1; 6
7 Programowanie z wykorzystaniem gniazd if (strcmp(protocol, "udp")==0){ type = SOCK_DGRAM; else{ type = SOCK_STREAM; if ((s = socket(pf_inet, type, ppe->p_proto))<0){ fprintf(stderr, "nieznany protokol: %s\n", protocol); return -1; if (connect(s, (struct sockaddr *)&sin, sizeof(sin))<0){ fprintf(stderr, "nie moge ustanowic polaczenia z %s:%s %s\n", host, service, strerror(errno)); return -1; return s; 7
8 Programowanie z wykorzystaniem gniazd #define LINELEN 100 int main(int argc, char **argv){ int s, n; char buf[linelen+1]; if (argc<4){ printf("sposob uzycia: client serwer serwis protokol\n"); return 0; s = connectsock(argv[1], argv[2], argv[3]); if(s<0) return 0; while ((n=read(s, buf, LINELEN))>0){ buf[n] = '\0'; fputs(buf, stdout); if (shutdown(s, SHUT_RDWR)<0){ fprintf(stderr, "problem z zamknieciem polaczenia: %s\n", strerror(errno)); return 0; return 1; 8
9 Programowanie z wykorzystaniem gniazd Przykładowe uruchomienie programu: client theta.uoks.uj.edu.pl daytime tcp Wynik działania: Tue Oct 14 15:27: lista serwisów (usług, portów): /etc/services lista protokołów: /etc/protocols 9
10 Gniazda w Javie Pakiet (biblioteka): java.net Wybrane klasy: Socket reprezentuje gnaizdo wykorzystywane do transmisji strumieniowej (TCP), istnieje wersja do transmisji szyfrowanej SSLSocket; DatagramSocket gniazdo do transmisji datagramowej (UDP); InetAddress adres IP, istnieją dwie klasy potomne: Inet4Address i Inet6Address; URL Uniform Resource Locator, identyfkator zasobu w sieci opisujący sposób dostępu do niego np. w ogólnym wypadku stosuje się klasę URI Uniform Resource Identyfcator. 10
11 Gniazda w Javie import java.io.inputstream; import java.net.socket; public class Client { private static final int LINELEN = 100; public static void main(string[] args) { byte[] buffer = new byte[client.linelen]; if (args.length<2) System.out.println("wywolanie java Client serwer port"); try { Socket sock = new Socket(args[0], Integer.parseInt(args[1])); InputStream in = sock.getinputstream(); while (in.read(buffer) > 0) System.out.println(new String(buffer)); sock.close(); catch (Exception e) { e.printstacktrace(); Wywołanie programu: javac Client.java java Client theta.uoks.uj.edu.pl 13 11
12 using System; using System.IO; using System.Net.Sockets; Gniazda w C# public class socketexample { public static void Main() { try { TcpClient tcpclnt = new TcpClient(); tcpclnt.connect("theta.uoks.uj.edu.pl",13); Stream stm = tcpclnt.getstream(); byte[] bb = new byte[100]; int k = stm.read(bb,0,100); for (int i = 0; i<k; i++) Console.Write(Convert.ToChar(bb[i])); tcpclnt.close(); catch (Exception e) { Console.WriteLine(e.StackTrace); Wywołanie programu: mcs socketexample.cs mint socketexample.exe lub mono socketexample.exe 12
13 Gniazda w Perlu i PHP Perl: use IO::Socket; my $sock = new IO::Socket::INET (PeerAddr => 'theta.uoks.uj.edu.pl', PeerPort => '13', Proto => 'tcp', ); die "Nie można utworzyc gniazda: $!\n" unless $sock; while(<$sock>) print $_; close($sock); PHP: <?php $socket = socket_create(af_inet, SOCK_STREAM, SOL_TCP); $result = socket_connect($socket, 'theta.uoks.uj.edu.pl', '13'); $out = socket_read($socket, 1024); echo $out; socket_close($socket);?> 13
14 Gniazda w Pythonie i Ruby Python: import socket s = socket.socket ( socket.af_inet, socket.sock_stream ) s.connect(("theta.uoks.uj.edu.pl", 13)) data = s.recv(1024) print data s.close() Ruby: require 'socket' print TCPSocket.open("theta.uoks.uj.edu.pl", "daytime").read 14
15 Usługa TIME Usługa TIME [RFC 868] służy do synchronizacji czasu pomiędzy komputerami w sieci. Czas jest przesyłany w postaci 32 bitowej liczby całkowitej określającej liczbę sekund od 1 stycznia 1900 roku np. C5 1B 77 8A. Usługa jest dostępna zarówno za pośrednictwem TCP i UDP poprzez port 37. Inne usługi wykorzystywane do synchronizacji czasu to NTP (Network Time Protocol) [RFC 1305] i jego odmiana SNTP (Simple Network Time Protocol) [RFC 1769]. 15
16 Klient usługi TIME (UDP) #include "connectsock.c" #define UNIXEPOCH ul int main(int argc, char **argv){ int s; char msg[] = "ktora godzina?"; time_t now; if ((s = connectsock(argv[1], "time", "udp"))<0) return 0; write(s, msg, strlen(msg)); if (read(s, (char *)&now, sizeof(now))<0) return 0; else{ now = ntohl((u_long)now); now -= UNIXEPOCH; printf("%s\n", ctime(&now)); if (shutdown(s, SHUT_RDWR)<0) return 0; return 1; 16
17 Klient usługi TIME (UDP) import java.net.datagrampacket; import java.net.datagramsocket; import java.net.inetaddress; import java.util.date; public class TimeUDPClient { private static final int PORT_TIME = 37; private static final String QUERY = "Ktora godzina?"; private static final int LINELEN = 5; private static final long UNIXEPOCH = L; public static void main(string[] args) { try { byte[] buffer = new byte[linelen]; DatagramSocket sock = new DatagramSocket(); DatagramPacket dp = new DatagramPacket( QUERY.getBytes(), 0, QUERY.length(), InetAddress.getByName(args[0]), PORT_TIME); 17
18 Klient usługi TIME (UDP) sock.send(dp); dp = new DatagramPacket(buffer, LINELEN); sock.receive(dp); long time = 0; int i; for (i=0; i<4; i++){ time *= 256; time += (buffer[i] & 255); time -= UNIXEPOCH; time *= 1000; Date d = new Date(time); System.out.println(d); sock.close(); catch (Exception e) { e.printstacktrace(); 18
19 Usługa NTP/SNTP Usługa NTP (Network Time Protocol) jest współcześnie wykorzystywana do synchronizacji czasu. NTP wykorzystuje protokół UDP oraz port 127. W praktyce, jeśli duża dokładność synchronizacji nie jest wymagana, używa się uproszczonej wersji protokołu: SNTP [RFC 2030]. Przykladowy pakiet wysyłany przez klienta: d9: 11 zegar niezsychronizowany 011 wersja protokołu NTP (3) 001 tryb aktywny symetryczny (1). Tryb klienta: 3 00: wartwa (stratum) komputera klienckiego: nieustalona 19
20 Usługa NTP/SNTP 0a: odstęp między kolejnymi wiadomościami: 2^10 sekund. fa: dokładność zegara: 2^(-6) sekundy : opóźnienie względem źródła czasu: 0.0 (liczba zmiennoprzecinkowa ze znakiem - kropka pomiędzy bitem 15 i 16) : błąd względem źródła czasu 1.01 s. 20
21 Usługa NTP/SNTP : identyfkator zegara referencyjnego brak : czas ostatniej aktualizacji lokalnego zegara : czas w którym żądanie zostało wysłane : czas dotarcia żądania do serwera cc a8 03 c9 aa f: przesyłany czas liczba sekund od , kropka pomiędzy bitem 31 i 32: 21
22 Usługa NTP/SNTP przykładowa odpowiedź serwera: 1a 01 0a e cc a8 04 2b 12 b4 49 7b cc a8 03 c9 aa f: cc a d fa: cc a d d7: czas otrzymany od klienta (T1) czas dotarcia żądania do serwera (T2) aktualny czas (T3) 22
23 Usługa NTP/SNTP Po odebraniu odpowiedzi od serwera, klient ustala aktualny czas w oparciu o: - czas wysłania żądania T1 (wg lokalnego zegara), - czas odebrania odpowiedzi przez serwer T2 (wg zegara serwera), - czas otrzymany z serwera T3 (wg zegara serwera) - czas otrzymania odpowiedzi T4 (wg lokalnego zegara) Różnicę czasów klient oblicza ze wzoru: T = ((T2 T1) + (T3 T4)) / 2. Opóźnienie wyraża się zależnością: D = (T4 T1) (T3 T2). 23
24 Usługa ECHO Usługa ECHO [RFC 347] odsyła klientowi wszystkie otrzymywane od niego dane. Interakcja trwa dopóki klient nie zakończy transmisji. Usługa ECHO jest wykorzystywana głównie do celów diagnostycznych, podobnie jak komenda ping. W przeciwieństwie do niej korzysta z protokołu TCP lub UDP. Do komunikacji wykorzystuje port 7. 24
25 Klient usługi ECHO (TCP) int main(int argc, char **argv){ int s, i, n1, n2; char buf[linelen+1]; if ((s = connectsock(argv[1], echo, tcp ))<0) return 0; for(i=2; i<argc; i++){ n1 = write(s, argv[i], strlen(argv[i])); while (n1>0 && (n2=read(s, buf, LINELEN))>0){ buf[n2] = '\0'; n1 -= n2; fputs(buf, stdout); fputs( \n, stdout); if (shutdown(s, SHUT_RDWR)<0) return 0; return 1; 25
26 Klient usługi ECHO (UDP) int main(int argc, char **argv){ int s, i, n; char buf[linelen+1]; if ((s = connectsock(argv[1], echo, udp ))<0) return 0; for(i=2; i<argc; i++){ write(s, argv[i], strlen(argv[i])); if ((n=read(s, buf, LINELEN))>0){ buf[n] = '\0'; fputs(buf, stdout); fputs( \n, stdout); if (shutdown(s, SHUT_RDWR)<0) return 0; return 1; 26
27 Klient usługi ECHO (TCP) import java.io.inputstream; import java.io.outputstream; import java.net.socket; public class EchoTCPClient { private static final int PORT_ECHO = 7; private static final int LINELEN = 100; public static void main(string[] args) { byte[] buffer = new byte[linelen]; if (args.length<2){ System.out.println("wywolanie java EchoTCPClient serwer argument1 argument2..."); return; 27
28 Klient usługi ECHO (TCP) try { Socket sock = new Socket(args[0], PORT_ECHO); OutputStream os = sock.getoutputstream(); InputStream in = sock.getinputstream(); int i, k, j; for (i=1; i<args.length; i++){ os.write(args[i].getbytes()); for(j=0; j<args[i].length(); j+=k){ k = in.read(buffer); System.out.print(new String(buffer, 0, k)); System.out.println(); sock.close(); catch (Exception e) { e.printstacktrace(); 28
29 Klient usługi ECHO (UDP) public class EchoUDPClient { private static final int PORT_ECHO = 7; private static final int LINELEN = 100; public static void main(string[] args) { try { byte[] buffer = new byte[linelen]; DatagramSocket sock = new DatagramSocket(); DatagramPacket dp; for (int i=1; i<args.length; i++){ dp = new DatagramPacket(args[i].getBytes(), 0, args[i].length(), InetAddress.getByName(args[0]), PORT_ECHO); sock.send(dp); dp = new DatagramPacket(buffer, LINELEN); sock.receive(dp); System.out.println(new String(dp.getData(), 0, dp.getlength())); sock.close(); catch (Exception e) { e.printstacktrace(); 29
30 Podsumowanie 1. Programowanie z wykorzystaniem gniazd - kontynuacja gniazda w Javie, transmisja TCP i UDP, protokół NTP / SNTP. 30
Protokół UDP UDP (User Datagram Protocol) . [
1 Plan wykładu 1. Model TCP/IP protokoły warstwy transportowej: UDP, TCP, połączenie i rozłączenie w TCP. 2. Programowanie z wykorzystaniem gniazd. usługai DATETIME, TIME, ECHO. 3. Popularne aplikacje
Model OSI/ISO. Komputer B. Warstwy w modelu OSI aplikacji. aplikacji. prezentacji Komputer A. prezentacji. sesji. sesji. komunikacja wirtualna
1 Plan wykładu 1. Model ISO/OSI warstwy modelu OSI transmisja w modelu OSI 2. Model TCP/IP protokół UDP protokół TCP 3. Połączenie i rozłączenie w TCP 4. Programowanie z wykorzystaniem gniazd. 2 Model
Usługa TIME. 77 8A. Usługa jest dostępna zarówno za pośrednictwem TCP i UDP
1 Plan wykładu 1. Programowanie z wykorzystaniem gniazd usługa TIME, usługa ECHO, 2. Popularne aplikacje TCP/IP poczta elektroniczna protokół SMTP, protokół POP, protokół IMAP. 2 Usługa TIME Usługa TIME
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
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. 4. Serwery współbieżne serwery
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
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ół
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,
Literatura uzupełniająca: W. Richard Stevens, Programowanie zastosowań sieciowych w systemie Unix WNT 1998
Gniazda BSD Literatura uzupełniająca: W. Richard Stevens, Programowanie zastosowań sieciowych w systemie Unix WNT 1998 socket() Użycie gniazd w transmisji połączeniowej bind() listen() socket() accept()
3. Identyfikacja. SKŁADNIA #include <sys/socket.h> int getpeername(int socket, struct sockaddr *addr, int *addrlen);
3.1. Określanie adresu połączonego hosta 3. #include int getpeername(int socket, struct sockaddr *addr, int *addrlen); Funkcja getpeername dostarcza adresu drugiej strony połączenia. Parametry:
Gniazda BSD. komunikacja bezpołączeniowa
Gniazda BSD komunikacja bezpołączeniowa Użycie gniazd w transmisji bezpołączeniowej socket() socket() bind() bind() STOP! recv() żądanie send() send() odpowiedź recv() STOP! recvfrom() #include
Gniazda BSD implementacja w C#
BSD implementacja w C# Implementacja w C#: Przestrzeń nazw: System.Net.Sockets Klasa: public class Socket : IDisposable Implementacja w C#: Konstruktor: public Socket( AddressFamily addressfamily, SocketType
Architektura typu klient serwer: przesyłanie pliku tekstowo oraz logowania do serwera za pomocą szyfrowanego hasła
Architektura typu klient serwer: przesyłanie pliku tekstowo oraz logowania do serwera za pomocą szyfrowanego hasła Wydział Inżynierii Mechanicznej i Informatyki Instytut Informatyki Teoretycznej i Stosowanej
Krótkie wprowadzenie do korzystania z OpenSSL
Krótkie wprowadzenie do korzystania z OpenSSL Literatura: http://www.openssl.org E. Rescola, "An introduction to OpenSSL Programming (PartI)" (http://www.linuxjournal.com/article/4822) "An introduction
Architektura typu klient serwer: uproszczony klient POP3
Architektura typu klient serwer: uproszczony klient POP3 Wydział Inżynierii Mechanicznej i Informatyki Instytut Informatyki Teoretycznej i Stosowanej dr inż. Łukasz Szustak Składniki systemu poczty e-mail
Java a dost p do Internetu.
Java a dost p do Internetu. Robert A. Kªopotek r.klopotek@uksw.edu.pl Wydziaª Matematyczno-Przyrodniczy. Szkoªa Nauk cisªych, UKSW 20.04.2017 Java a dost p do Internetu Java Networking - jest koncepcj
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
1.1 Przykład znajdowanie liczb pierwszych leżących w zadanym zakresie, tryb bezpołączeniowy
1.1 Przykład znajdowanie liczb pierwszych leżących w zadanym zakresie, tryb bezpołączeniowy Należy znaleźć liczby pierwsze w zakresie od 2 do N na P komputerach. Zarządca pocz[i], kon[i] wykonawca 1 wykonawca
Programowanie Sieciowe 1
Programowanie Sieciowe 1 dr inż. Tomasz Jaworski tjaworski@iis.p.lodz.pl http://tjaworski.iis.p.lodz.pl/ Klient UDP Kolejność wykonywania funkcji gniazdowych klienta UDP Protokół UDP jest bezpołączeniowy:
Programowanie przy użyciu gniazdek
Programowanie przy użyciu gniazdek Gniazdo (ang. socket) pojęcie abstrakcyjne reprezentujące dwukierunkowy punkt końcowy połączenia. Dwukierunkowość oznacza możliwość wysyłania i przyjmowania danych. Wykorzystywane
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
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
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)
Komunikacja sieciowa - interfejs gniazd
SOE Systemy Operacyjne Wykład 14 Komunikacja sieciowa - interfejs gniazd dr inŝ. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW Model komunikacji sieciowej Model OSI (ang. Open System
2. Interfejs gniazd. 2.1. Gniazdo
2. 2.1. Gniazdo Gniazdo (ang. socket): pewna abstrakcja wykorzystywana do wysyłania lub otrzymywania danych z innych procesów. Pełni rolę punktu końcowego w linii komunikacyjnej. to interfejs między programem
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
Iteracyjny serwer TCP i aplikacja UDP
Iteracyjny serwer TCP i aplikacja UDP Iteracyjny serwer TCP Funkcje wywoływane przez serwer TCP socket() - bind() - listen() - accept() - read() / write() - close() socket() Creates an endpoint for communication
ZESZYTY ETI ZESPOŁU SZKÓŁ W TARNOBRZEGU Nr 1 Seria: Teleinformatyka 2013
ZESZYTY ETI ZESPOŁU SZKÓŁ W TARNOBRZEGU Nr 1 Seria: Teleinformatyka 2013 Paweł Kowalik Zespół Szkół im. ks. S. Staszica w Tarnobrzegu KOMUNIKACJA SIECIOWA MIĘDZY URZĄDZENIAMI Z WYKORZYSTANIEM PROTKOŁU
Gniazda UDP. Bartłomiej Świercz. Łódź, 3 kwietnia Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda UDP
Gniazda UDP Bartłomiej Świercz Katedra Mikroelektroniki i Technik Informatycznych Łódź, 3 kwietnia 2006 Wstęp ZewzględunaróżnicewprotokołachTCPiUDPsposób korzystania z gniazd UDP różni sie znacznie od
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 sieciowe
Programowanie sieciowe dr Tomasz Tyrakowski Dyż ury: wtorki 12:00 13:00 czwartki 14:00 15:00 pokój B4-5 e-mail: ttomek@amu.edu.pl materiały: http://www.amu.edu.pl/~ttomek 1 Wymagania podstawowa znajomość
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
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
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,...)
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
Serwery współbieżne c.d.
Serwery współbieżne c.d. 1. Serwery wielousługowe i wieloprotokołowe. 2. Sterowanie współbieżnością w serwerze współbieżność sterowana zapotrzebowaniem, alokacja wstępna procesów podporządkowanych. 3.
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
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,
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
Programowanie aplikacji równoległych i rozproszonych. Wykład 4
Wykład 4 p. 1/44 Programowanie aplikacji równoległych i rozproszonych Wykład 4 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Gniazda - Wstęp
Sockety TCP/IP - podstawy. Sieci Komputerowe II Wyk ład 2
Sockety TCP/IP - podstawy Sieci Komputerowe II Wyk ład 2 Plan Klient IPv4 Serwer IPv4 Pierwszy program Aplikacja w architekturze klient-serwer Realizacja protokołu echo Zasada działania: klient łączy się
Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak
Wieloplatformowe aplikacje sieciowe dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak SOAP Serwer: Axis2 / Java Wbudowany komponent nasłuchujący, (Apache / Tomcat) Client Axis2 klient / XML Jeżyk programowania:
1. Model klient-serwer
1. Model klient-serwer 1.1. Model komunikacji w sieci łącze komunikacyjne klient serwer Tradycyjny podział zadań: Klient strona żądająca dostępu do danej usługi lub zasobu Serwer strona, która świadczy
Aplikacja Sieciowa. Najpierw tworzymy nowy projekt, tym razem pracować będziemy w konsoli, a zatem: File->New- >Project
Aplikacja Sieciowa Jedną z fundamentalnych właściwości wielu aplikacji jest możliwość operowania pomiędzy jednostkami (np. PC), które włączone są do sieci. W Windows operacja ta jest możliwa przy wykorzystaniu
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,
Gniazda BSD. Procesy w środowisku sieciowym. Gniazda podstawowe funkcje dla serwera. Gniazda podstawowe funkcje dla klienta
Procesy w środowisku sieciowym! Obsługa! Protokół! Numery portów i ogólnie znane adresy! Połączenie (asocjacja) i gniazdo (półasocjacja)! Model klient-serwer " Serwer - bierne otwarcie kanału " Klient
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
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
Oprogramowanie komunikacyjne dla Internetu rzeczy Laboratorium nr 4 komunikacja unicastowa IPv6
Oprogramowanie komunikacyjne dla Internetu rzeczy Laboratorium nr 4 komunikacja unicastowa IPv6 Celem ćwiczenia jest zdobycie umiejętności programowania komunikacji unicastowej za pomocą protokołu IPv6
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
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
Gniazda - Wstęp. Oprogramowanie systemów równoległych i rozproszonych. Sposób komunikacji. Domena adresowa. olas@icis.pcz.pl
Gniazda - Wstęp Oprogramowanie systemów równoległych i rozproszonych Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Domena adresowa 1/??
SUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq)
Program my_ping: wysłanie komunikatu ICMP z żądaniem echa Struktura icmp (plik netinet/ip_icmp.h) 0 7 8 15 16 31 TYP (icmp_type) KOD (icmp_code) IDENTYFIKATOR (icmp_id) SUMA KONTROLNA (icmp_cksum) NUMER
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
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ą
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)
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
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
Gniazda surowe. Bartłomiej Świercz. Łódź,9maja2006. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda surowe
Gniazda surowe Bartłomiej Świercz Katedra Mikroelektroniki i Technik Informatycznych Łódź,9maja2006 Wstęp Gniazda surowe posiadają pewne właściwości, których brakuje gniazdom TCP i UDP: Gniazda surowe
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
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
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
SOAP. Autor: Piotr Sobczak
SOAP Autor: Piotr Sobczak AGENDA: Trochę o Web Services Wprowadzenie do SOAP Anatomia komunikatu SOAP Wysyłanie i otrzymywanie komunikatu SOAP oraz API Javy w przykładach SOAP z załącznikami SOAP-RPC Obsługa
Gniazda. S. Samolej: Gniazda 1
Gniazda dr inż. Sławomir Samolej Katedra Informatyki i Automatyki Politechnika Rzeszowska Program przedmiotu oparto w części na materiałach opublikowanych na: http://wazniak.mimuw.edu.pl/ oraz na materiałach
Networking. Zaawansowane technologie Javy 2019
Networking Zaawansowane technologie Javy 2019 Model klient-serwer W modelu klient-serwer (ang. client-server) dane trzymane są na serwerze, interfejs użytkownika i logika przetwarzania danych są realizowane
Programowanie obiektowe
Programowanie obiektowe Wykład 3: Tworzenie i usuwanie obiektów 3/10/2013 S.Deniziak: Programowanie obiektowe - Java 1 Deklaracje pól klasy class Klasa1 { int i; Klasa2 k = new Klasa2(); char c= x ; byte
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
Przykład aplikacji UDP
#include #include #include /* atoi */ #include /* htons, ntohs... */ #include /* memset */ #include /* inet_ntoa */ #include
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 procedur. Krzysztof Banaś Systemy rozproszone 1
Zdalne wywołanie procedur Krzysztof Banaś Systemy rozproszone 1 RPC Komunikacja za pomocą gniazd jest wydajna, gdyż korzystamy z funkcji systemowych niewygodna, gdyż musimy wyrażać ją za pomocą jawnego
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
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Inżynierii Elektrycznej i Komputerowej Politechnika Krakowska programowanie usług sieciowych Dziedzina Unix laboratorium: 06 Kraków, 2014 06. Programowanie Usług Sieciowych
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,
Interfejsy w Javie. Przykład zastosowania interfejsów:
1 Plan wykładu 1. Interfejsy w Javie. 2. Zdalne wywołanie metod (Remote Method Invocation). interfejsy w RMI, architektura RMI, przykładowa aplikacja korzystająca z RMI, przekazywanie parametrów, dystrybucja
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
Remote Method Invocation
Remote Method Invocation 1. Interfejsy w Javie. 2. Zdalne wywołanie metod (Remote Method Invocation). interfejsy w RMI, 3. Przykładowa aplikacja korzystająca z RMI, 4. Własne gniazda w RMI. 5. Dystrybucja
Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone
Plan wykładu CORBA Wprowadzenie Architektura CORBA IDL język definicji interfejsów ORB Object Request Broker Usługi i POA Aplikacje CORBA tworzenie serwera tworzenie klienta Aplikacje rozproszone Cechy
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
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
Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego
Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego 1 /24 Pisanie pojedynczych znaków z klawiatury do pliku #include void main(void) { FILE *fptr; // wkaznik do pliku, tzw. uchwyt
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
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
Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.
Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA. Celem ćwiczenia jest przygotowanie prostej aplikacji wykorzystującej architekturę CORBA. Aplikacja składa się z usługodawcy (serwera)
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
SOAP i alternatywy. 1. WSDL. 2. Protokoły tekstowe XML-RPC. JSON-RPC. SOAPjr. 3. Protokoły binarne Google Protocol Bufers. Apache Thrift.
SOAP i alternatywy 1. WSDL. 2. Protokoły tekstowe XML-RPC. JSON-RPC. SOAPjr. 3. Protokoły binarne Google Protocol Bufers. Apache Thrift. 1 WSDL WSDL (Web Services Description Language) jest standardem
Programowanie w języku Java. Bazy danych SQLite w Javie
Programowanie w języku Java Bazy danych SQLite w Javie Co to jest SQLite SQLite to bezserwerowa, nie wymagająca konfiguracji relacyjna baza danych. Znajduje szerokie zastosowanie np.. w systemie android
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
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
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
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
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
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
JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ]
JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA Marcin Lewandowski [ mlew@ippt.gov.pl ] PROGRAMOWANIE SIECIOWE 2 TCP/IP = UDP + TCP TCP/IP składa się z dwóch podstawowych protokołów: TCP i UDP. TCP jest
Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1
Zdalne wywołanie procedur Krzysztof Banaś Systemy rozproszone 1 RPC Komunikacja za pomocą gniazd jest wydajna, gdyż korzystamy z funkcji systemowych niewygodna, gdyż musimy wyrażać ją za pomocą jawnego
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
Sieciowa komunikacja procesów - XDR i RPC
*** abc.x Przyklad pliku RPCGEN Obliczanie sumy, roznicy i iloczynu dwoch liczb calkowitych *** ************************************ Wywolanie procedury odleglej dopuszcza tylko jeden argument wywolania
Pobieranie argumentów wiersza polecenia
Pobieranie argumentów wiersza polecenia 2. Argumenty wiersza polecenia Lista argumentów Lista argumentów zawiera cały wiersz poleceń, łącznie z nazwą programu i wszystkimi dostarczonymi argumentami. Przykłady:
4. Algorytmy klienta
4. Algorytmy klienta 4.1. Algorytm działania programu klienckiego typu połączeniowego (TCP) 1. Określ adres IP i numer portu dla serwera, z którym należy nawiązać komunikację. 2. Uzyskaj przydział gniazda
Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.
Protokół HTTP 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX. 1 Usługi WWW WWW (World Wide Web) jest najpopularniejszym sposobem udostępniania
Wykład 7: Pakiety i Interfejsy
Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,