Interfejs programowy Windows Sockets 2. Aplikacja klient-serwer TCP Echo

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

Download "Interfejs programowy Windows Sockets 2. Aplikacja klient-serwer TCP Echo"

Transkrypt

1 Interfejs programowy Windows Sockets 2. Aplikacja klient-serwer TCP Echo Zagadnienia Omówienie biblioteki Winsock. Specyfikacja klienta tcpecho. Specyfikacja serwera tcpecho. dr Zbigniew Lipiński Instytut Matematyki i Informatyki UO zlipinski@math.uni.opole.pl

2 Interfejs programowy Windows Sockets 2 Windows Sockets jest implementacja gniazd BSD (University of California-Berkeley Sockets API) edycja WinSock wersja WinSock wersja 2.0. Windows Sockets jest interfejsem programowym warstwy transportowej modelu OSI, pozwalającym budować aplikacje sieciowe oparte o protokoły rodziny TCP/IP. Windows Sockets 2 definiuje interfejsy komunikacyjne do obsługi wielu standardów i usług: DNS, SAP, X.509, Quality of Service, transmisji w trybie multicast, multipoint. 2

3 W skład specyfikacji WinSock2 wchodzą: WinSock 2 API (budowa aplikacji). WinSock 2 Service Provider Interface, udostępnianie interfejsów WinSock 2 protokołom transportowym. Komponenty Windows Open System Architecture (WOSA): WinSock Service Provider Interface (SPI), nazwy funkcji zaczynają się od WSP, np. WSPBind(). WinSock Provider Upcall, nazwy funkcji zaczynają się od WPU, np. WPUCloseEvent(). WSC Windows Sockets Configuration, np. WSCDeinstallProvider(). NSP Namespace Provider, np. NSPInstallServiceClass(). Nazwy funkcji Windows Sockets 2 zaczynają się od WSA. Przykład: WinSock 1.1: connect() WinSock 2.0: WSAConnect() 3

4 Architektura Windows Sockets 2 Źródło: MS Platform SDK. 4

5 Funkcje WinSock 2 Funkcje BSD: accept() bind() closesocket() connect() getpeername() getsockname() getsockopt() inet_addr() inet_ntoa() ioctlsocket() listen() ntohl(), ntohs() recv(), recvfrom() select() send(), sendto() setsockopt() shutdown() socket() Funkcje Windows: WSAAccept() WSAAsyncGetHostByAddr(), WSAAsyncGetHostByName(), WSAAsyncGetProtoByName(), WSAAsyncGetProtoByNumber(), WSAAsyncGetHostByName(), WSAAsyncGetServByName(), WSAAsyncGetServByPort(), WSAAsyncSelect(), WSACancelAsyncRequest(), WSAAsyncGetXByY(), WSACloseEvent(), WSACleanup(), WSAConnect(), WSACreateEvent(), WSADuplicateSocket(), WSAEnumNetworkEvents(), WSAEnumProtocols(), WSAEventSelect(), WSAGetLastError(), WSAGetOverlappedResult(), WSAGetQOSByName(), WSAHtonl(), WSAHtons(), WSAIoctl(), WSAJoinLeaf(), WSANtohl(), WSANtohs(), WSAProviderConfigChange(), WSARecv(), WSARecvFrom(), WSAResetEvent(), WSASend(), WSASendTo(), WSASetEvent(), WSASetLastError(), WSAGetLastError(), WSASocket(), WSAStartup() 5

6 Funkcje WinSock 2 Funkcje Windows (cd): getservbyname(), getservbyport(), geth(), gethostbyaddr(), gethostname() gethostbyaddr(), getprotobyname(), gethostname(), get(), gets(), getservbyport(), inet_addr(), inet_ntoa() WSAAsyncGetHostByAddr(), WSAAsyncGetHostByName(), WSAAsyncGetProtoByName(), WSAAsyncGetProtoByNumber(), WSAAsyncGetServByName(), WSAAsyncGetServByPort(), WSACancelAsyncRequest() Funkcje konwersji nazw: WSAAddressToString(), WSAEnumNameSpaceProviders(), WSAGetServiceClassNameByClassId(), WSAInstallServiceClass(), WSALookupServiceBegin(), WSALookupServiceEnd(), WSALookupServiceNext(), WSARemoveServiceClass(), WSASetService(), WSAStringToAddress(), WSAGetServiceClassInfo() 6

7 Specyfikacja struktury WSADATA Nazwa struktury : WSADATA Opis : Atrybuty : Struktura WSADATA zawiera informacje o implementacji gniazd (Windows Sockets). Struktura WSADATA jest zadeklarowana w pliku Winsock2.h. Aplikacja nie powinna używać atrybutów imaxsockets, imaxudpdg, i lpvendorinfo struktury WSAData gdy wartość atrybutu wversion, po wywołaniu WSAStartup jest co najmniej 2. Wyjaśnienie: This is because the architecture of Windows Sockets has been changed in version 2 to support multiple providers, and WSAData no longer applies to a single vendor's stack. Two new socket options are introduced to supply provider- specific information: SO_MAX_MSG_SIZE (replaces the imaxudpdg element) and PVD_CONFIG (allows any other provider-specific configuration to occur). wversion - Wersja gniazd WinSock którą ma używać biblioteka Ws2_32.dll. whighversion - Najwyższa wersja WinSock jaką może używać biblioteka.dll. Standardowo, wartość taka sama, jak wversion. szdescription - Zerem zakończony string znaków ASCI (null-terminated ASCII string) do którego Ws2_32.dll kopiuje opis implementacji gniazd. Tekst (do 256 znaków) może być używany do opisów wiadomości. szsystemstatus - Zakończony zerem string znaków ASCI do którego WSs2_32.dll kopiuje informacje o statusie lub konfiguracji. Ws2_32.dll powinna używać tego atrybutu do tylko gdy informacje mogą być ważne dla użytkowników, atrybut nie powinien być traktowany jako rozszerzenie zmiennej szdescription. imaxsockets - Pozostawiony dla zgodności poprzednimi wersjami gniazd. Parametr powinien być ignorowany przez Windows Socketsv.2 i wersje późniejsze (nie ma już jednej wartości dla wszystkich dostarczycieli usług). imaxudpdg - Atrybut ignorowany przez gniazda wersji 2 i następne. imaxudpdg pozostawiony dla zgodności z wersją gniazd Windows Sockets 1.1. Nie powinien być używany przy budowaniu nowych aplikacji. Dla określenia wielkości wiadomości dostarczyciela usług dla gniazda i typu gniazda aplikacje powinny używać getsockopt aby uzyskać wartość opcji SO_MAX_MSG_SIZE. lpvendorinfo - Atrybut ignorowany przez Windows Sockets v.2 i następne. lpvendorinfo pozostawiono dla zgodności z wersją gniazd Windows Sockets 1.1. Dla określenia konfiguracji dostarczyciela usług dla gniazda powinny używać getsockopt aby uzyskać wartość opcji PVD_CONFIG. 7

8 Struktura WSADATA typedef struct WSAData { WORD wversion; WORD whighversion; char szdescription[wsadescription_len+1]; char szsystemstatus[wsasys_status_len+1]; unsigned short imaxsockets; unsigned short imaxudpdg; char FAR * lpvendorinfo; }WSADATA, *LPWSADATA; 8

9 Nazwa struktury: sockaddr_in Opis: Atrybuty: Specyfikacja struktury sockaddr_in Struktura sockaddr_in zawiera adres IP i numer portu odbiorcy danych. Struktura zadeklarowana w pliku Winsock2.h (dla IPv4), ws2tcpip.h (dla IPv6). sin_family sin_port sin_addr sin_zero Kod rodziny adresów TCP//IP (wartość musi być AF_INET). Numer portu (IP port). Adres IP hosta. Pole służy do uzupełniania tak, aby wielkość struktury była taka sama jak SOCKADDR. Implementacja struktury sockaddr_in: struct sockaddr_in { short unsigned short struct in_addr char }; sin_family; sin_port; sin_addr; sin_zero[8]; 9

10 Specyfikacja struktury in_addr Nazwa struktury : in_addr Opis: Struktura in_addr adres IP hosta. Struktura zdefiniowana w WINSOCK.H Atrybuty : S_un_b - adres hosta w formacie u_chars. S_un_w - adres hosta w formacie dwóch u_shorts. S_addr - adres hosta w formacie u_long. Implementacja struktury in_addr: struct in_addr { union { struct { unsigned char s_b1, s_b2, s_b3, s_b4; } S_un_b; struct { unsigned short s_w1, s_w2; } S_un_w; unsigned long S_addr; } S_un; }; 10

11 Nazwa struktury : hostent Opis: Atrybuty : Specyfikacja struktury hostent Struktura jest używana przez funkcje do przechowywania informacji o hoście. Zadeklarowana w pliku Winsock2.h h_name Nazwa hosta. Jeżeli jest używany system DNS (lub podobny) zmienna zawiera pełną nazwę DNS ową hosta FQDN (ang. Fully Qualified Domain Name). W pliku hosts, wartość zmiennej jest drugim wpisem, po adresie IP. h_aliases - Zerem zakończona tablica alternatywnych nazw hosta. h_addrtype - Typ adresu. h_length - Długość w bajtach każdego adresu. h_addr_list - Zerem zakończona lista adresów IP hosta. Adresy IP są zwracane w uporządkowaniu bajtów Big Endian. Makro h_addr zastępuje h_addr_list[0] w celu zgodności ze starszymi wersjami oprogramowania. Przykład. char *ServerName; LPHOSTENT hp; SOCKADDR_IN AdresIpSerwera; hp = gethostbyname(servername); AdresIpSerwera.sin_addr.S_addr = hp->h_addr; 11

12 Implementacja struktury hostent typedef struct hostent { char FAR* h_name; char FAR FAR** h_aliases; short h_addrtype; short h_length; char FAR FAR** h_addr_list; } hostent; 12

13 Specyfikacja funkcji WSAStartup() Nazwa funkcji : WSAStartup() Zwracana wartość: int WSAStartup() zwraca zero gdy wywołanie funkcji zakończyło się sukcesem. W innym przypadku zwraca następujące kody błędów: WSASYSNOTREADY Wskazuje, że sieć lub podsieć nie jest przygotowana do transmisji danych. WSAVERNOTSUPPORTED Żądana wersja WinSock nie jest obsługiwana przez implementację WinSock. WSAEINPROGRESS Trwa operacja blokowania WinSock 1.1. WSAEPROCLIM - WSAEFAULT - Osiągnięto granicę liczby żądań dopuszczalną przez WinSock. Błędna wartość wskaźnika lpwsadata (not a valid pointer). Argumenty: WORD wversionrequested - LPWSADATA lpwsadata - [in] Najwyższa obsługiwana wersja WinSock, którą nadawca (caler) może użyć. Bajt najwyższy określa minimalną wersję, najniższy bajt określa maksymalna wersję. [out] Wskaźnik do struktury WSADATA. Opis: Funkcja WSAStartup() inicjuje użycie przez proces biblioteki WS2_32.DLL. Funkcja WSAStartup() musi być pierwszą funkcja Windows Sockets wywołana przez aplikacje. 13

14 Specyfikacja funkcji WSACleanup() Nazwa funkcji: WSACleanup() Zwracana wartość: int WSACleanup() zwraca zero gdy wywołanie funkcji zakończyło się sukcesem. W innym przypadku zwraca SOCKET_ERROR, i określony kod błędu może być uzyskany poprzez wywołanie finkcji WSAGetLastError(): Argumenty: brak Opis: WSANOTINITIALISED - Przed wywołaniem tej funkcji WSACleanup() musi być wywołana z sukcesem funkcja WSAStartup(). WSAENETDOWN - Awaria sieci (network subsystem has failed). WSAEINPROGRESS - Trwa operacja blokowania WinSock 1.1 lub dostarczyciel usługi (service provider) obsługuje komunikat zwrotny (a callback function). Funkcja WSACleanup() kończy użycie biblioteki WS2_32.DLL. 14

15 Specyfikacja funkcji socket() Nazwa funkcji: socket() Zwracana wartość: SOCKET Jeżeli nie ma błędów, funkcja socket() zwraca referencje do nowego gniazda. W przeciwnym przypadku zwraca kod INVALID_SOCKET. Kod błędu można uzyskać przez wywołanie funkcji WSAGetLastError(). Argumenty: int af, int type, int protocol af - type - protocol- [in] Typ adresu stosu (address family specification). [in] Typ adresu dla nowych gniazd (SOCK_STREAM, SOCK_DGRAM). [in] Numer protokołu użytego przez gniazdo. Wartość parametru: IPPROTO_IP, IPPROTO_TCP, 0. Opis: Funkcja socket() tworzy gniazdo o określonym typie (specific service provider). Funkcja zadeklarowana w pliku winsock2.h, implementacja w pliku ws2_32.lib. 15

16 Specyfikacja funkcji WSAGetLastError() Nazwa funkcji: WSAGetLastError() Zwracana wartość: int Argumenty: brak Opis: Funkcja WSAGetLastError() zwraca status błędu ostatniej nieudanej operacji. 16

17 Specyfikacja funkcji htons() Nazwa funkcji: htons() Zwracana wartość: u_short Funkcja htons() zwraca wartość w uporządkowaniu big-endian (TCP/IP network byte order). Argumenty: u_short hostshort hostshort - [in] 16-bitowa liczba w uporządkowaniu bajtów hosta (Windows: little-endian, Unix: bigendian). Opis: Funkcja htons() konwertuje u_short z uporządkowania bajtów hosta na big-endian. 17

18 Specyfikacja funkcji inet_addr() Nazwa funkcji : inet_addr() Zwracana wartość: unsigned long Argumenty : const char* cp cp - [in] Zerem zakończony string znaków reprezentujący adres IP zapisany w notacji kropkowanej (np ). Opis : Funkcja inet_addr() konwertuje string zawierający adres IPv4 w wersji kropkowanej na odpowiedni adres w strukturze IN_ADDR. Przykład: użycie funkcji inet_addr() w strukturze sockaddr_in atrybut sin_addr.s_addr = inet_addr(nazwa_serwera); 18

19 Specyfikacja funkcji gethostbyname() Nazwa funkcji : gethostbyname() Zwracana wartość: struct hostent* FAR Argumenty : const char* name name - [in] Wskaźnik do zakończonej zerem nazwy hosta (odbiorcy danych). Opis : Funkcja gethostbyname() pobiera nazwę hosta z bazy hosta. Zamiast gethostbyname() zalecane jest używanie funkcji getaddrinfo(). 19

20 Specyfikacja funkcji CopyMemory() Nazwa funkcji : CopyMemory() Zwracana wartość: void Argumenty : PVOID Destination, const VOID* Source, SIZE_T Length Destination - [in] Wskaźnik zawierający początkowy adres docelowego bloku danych. Source - Length - [in] Wskaźnik zawierający początkowy adres źródłowego bloku danych. [in] Wielkość kopiowanego bloku danych (wielkość liczona w bajtach). Opis: Funkcja CopyMemory() służy do kopiowania bloków danych między obszarami pamięci. Funkcja zadeklarowana w pliku Winbase.h, Windows.h. 20

21 Specyfikacja funkcji connect() Nazwa funkcji : connect() Zwracana wartość: int Argumenty : SOCKET s, const struct sockaddr* name, int namelen s - [in] Obiekt identyfikujący niepołączone gniazdo. name - [in] Nazwa gniazda w strukturze SOCKADDR do którego powinno być zrealizowane połączenie. namelen - [in] Długość nazwy gniazda (liczona bajtach). Opis : Funkcja buduje połączenie do określonego gniazda. 21

22 Specyfikacja funkcji send() Nazwa funkcji : send() Zwracana wartość: int Argumenty : SOCKET s, const char* buf, int len, int flags s buf len flags [in] Obiekt identyfikujący połączone gniazdo. [in] Bufor zawierający dane do wysłania. [in] Długość danych w buforze (liczona w bajtach). [in] Wskaźnik określający typ wywołania funkcji. Flagi: MSG_DONTROUTE Dane nie powinny być rutowane. WinSock service provider może ignorować tą flagę. MSG_OOB Wysyła dane Out-of-Band Data (gniazdo typu TCP, np. SOCK_STREAM). Opis : Funkcja send() wysyła dane do połączonego gniazda. 22

23 Specyfikacja funkcji recv() Nazwa funkcji : recv() Zwracana wartość: int Jeśli nie ma błędów, funkcja recv() zwraca liczbę odebranych bajtów. Jeśli połączenie zostało zamknięte (gracefully closed), zwracaną wartością jest zero. W pozostałych przypadkach zwracana jest wartość SOCKET_ERROR. Kod błędu można uzyskać wywołując funkcję WSAGetLastError(). Argumenty : SOCKET s, char* buf, int len, int flags s - [in] Obiekt identyfikujący połączone gniazdo. buf - [out] Bufor na przychodzące dane. len - [in] Długość bufora (argumentu buf) w bajtach. flags - [in] Parametr określający typ wywołania funkcji. Opis : Funkcja recv() odbiera dane z połączonego (connected) gniazda lub z gniazda połączonego funkcją bind() (bound socket). 23

24 Specyfikacja funkcji closesocket() Nazwa funkcji : closesocket() Zwracana wartość: int Argumenty : SOCKET s s [in] Obiekt określający gniazdo do zamknięcia. Opis : Funkcja closesocket() zamyka gniazdo. 24

25 Nazwa funkcji : bind() Zwracana wartość: int Specyfikacja funkcji bind() W przypadku błędu funkcja zwraca SOCKET_ERROR z kodem który można uzyskać wywołując metodę WSAGetLastError(), w przeciwnym przypadku zwaraca zero. Argumenty : SOCKET s, const struct sockaddr* name, int namelen s - [in] Obiekt identyfikujący niepołączone gniazdo (unbound socket). name - [in] Adres IP do przypisania do gniazda (brany ze struktury SOCKADDR). namelen - [in] Długość (w bajtach) wartości parametru name. Opis : Funkcja kojarzy adres lokalny hosta z gniazdem. 25

26 Nazwa funkcji : listen() Zwracana wartość: int Specyfikacja funkcji listen() Jeśli nie ma błędów funkcja listen() zwraca zero. W pozostałych przypadkach zwracana jest wartość SOCKET_ERROR. Kod błędu można uzyskać wywołując funkcję WSAGetLastError(). Argumenty : SOCKET s, int backlog s - backlog - [in] Obiekt identyfikujący połączone (bound), nierozłączone (unconnected) gniazdo. [in] Maksymalna długość kolejki czekających połączeń. Jeżeli wartość parametru jest ustawiona na SOMAXCONN, serwer ustawia wartość tego parametru na maksymalnym, ale rozsądnym poziomie. Nie ma standardowej procedury określania wartości tego parametru. Opis : Funkcja listen() ustawia gniazdo w stan nasłuchiwania. 26

27 Specyfikacja funkcji accept() Nazwa funkcji : accept() Zwracana wartość: SOCKET Jeżeli nie ma błędu funkcja accept() zwraca typ SOCKET. Zwrócona wartość jest uchwytem do gniazda do którego jest tworzone połączenie. W pozostałych przypadkach jest zwracana wartości INVALID_SOCKET. Kod błędu można uzyskać wywołując funkcję WSAGetLastError(). Argumenty : SOCKET s, struct sockaddr* addr, int* addrlen s - addr - [in] Obiekt identyfikujący gniazdo, które przeszło w stan nasłuchiwania poprzez wywołanie funkcji listen(). [out] Parametr opcjonalny, wskaźnik do bufora, który przechowuje adres łączącego się hosta. Format parametru addr jest wyznaczany na podstawie wartości parametru sa_family ze struktury SOCKADDR. addrlen - [out] Opcjonalny wskaźnik do liczby zawierającej długość parametru addr. 27

28 Specyfikacja funkcji htonl() Nazwa funkcji : htonl() Zwracana wartość: u_long Argumenty : u_long hostlong hostlong [in] 32-bitowa liczba w uporządkowaniu little endian (windows). Opis : Funkcja htonl() konwertuje u_long z uporządkowania little endian na big endian. 28

29 Specyfikacja funkcji ntohs() Nazwa funkcji : ntons() Zwracana wartość: u_short Funkcja ntons() zwraca wartość w uporządkowaniu hosta. Argumenty : u_short netshort netshort - [in] 16-bit liczba w uporządkowaniu big-endian (TCP/IP network byte order). Opis : Funkcja ntons() konwertuje liczbę u_short z uporządkowania bajtów big-endian na uprządkowanie hosta. Aplikacja decyduje czy konwersja musi być dokonana. Przykład: local.sin_port = ntons((short)iport); 29

30 Specyfikacja funkcji inet_ntoa() Nazwa funkcji: inet_ntoa() Zwracana wartość: char* FAR Jeżeli nie ma błędów inet_ntoa() zwraca wskaźnik char* do statycznego bufora zawierającego adres w standardzie kropkowanym. W pozostałych przypadkach funkcja zwraca NULL. Argumenty : struct in_addr in in - [in] Wskaźnik do struktury in_addr reprezentującej adres IP hosta. Opis : Funkcja inet_ntoa() konwertuje adres IPv4 na adres w formacie kropkowanym (dotted format). 30

31 Specyfikacja funkcji CreateThread() Nazwa funkcji : CreateThread() Zwracana wartość: HANDLE Argumenty: Funkcja zwraca uchwyt do nowego wątku. LPSECURITY_ATTRIBUTES lpthreadattributes - [in] Wskaźnik do struktury SECURITY_ATTRIBUTES która określa czy zwrócony uchwyt może być dziedziczony (przez proces potomny). Gdy wartość lpthreadattributes = NULL, uchwyt nie może być dziedziczony. SIZE_T dwstacksize - [in] Początkowa wartość stosu liczona w bajtach. System zaokrągla wartość wielkość strony. Jeżeli parametr ma wartość zero nowy wątek używa domyślnej wartość. LPTHREAD_START_ROUTINE lpstartaddress - [in] Wskaźnik do funkcji aplikacji typu LPTHREAD_START_ROUTINE która ma być wywołana przez wątek. Wskaźnik zawiera początkową (startową) wartość adresu wątku. LPVOID lpparameter - [in] Wskaźnik do zmiennej która ma być przekazana do wątku. DWORD dwcreationflags - [in] Flaga która służy do kontroli tworzenia wątku. Gdy flaga ma wartość CREATE_SUSPENDED, wątek jest po utworzeniu zawieszony, nie zostanie uruchomiony do czasu wywołania funkcji ResumeThread(). Gdy flaga ma zwartość zero wątek jest uruchamiany zaraz po utworzeniu. LPDWORD lpthreadid - [out] Wskaźnik do zmiennej zawierającej informacje o identyfikatorze wątku (thread identifier). 31

32 Specyfikacja funkcji CreateThread(), cd. Wartości Arg: lpthreadattributes = NULL dwstacksize = 0 lpstartaddress = ClientThread lpparameter = (LPVOID)sClient dwcreationflags = 0 lpthreadid = &dwthreadid Opis : Funkcja CreateThread() tworzy wątek wykonywany wewnątrz wirtualnej przestrzeni adresowej wywołanego procesu. 32

33 Specyfikacja funkcji CloseHandle() Nazwa funkcji : CloseHandle() Zwracana wartość: BOOL Funkcja zwraca TRUE gdy zamknięcie uchwytu zakończyło się sukcesem. W sytuacji błędnej funkcja zwraca zero. Argumenty : HANDLE hobject hobject - [in, out] Uchwyt do otwartego obiektu. Opis : Funkcja CloseHandle() zamyka otwarty uchwyt obiektu. 33

34 Nazwa funkcji : ClientThread() Zwracana wartość: DWORD WINAPI Argumenty : LPVOID Implementacja funkcji ClientThread(): Specyfikacja funkcji ClientThread() DWORD WINAPI ClientThread(LPVOID lpparam) { SOCKET sock = (SOCKET)lpParam; char chbuff[default_buffer]; int iret, inumleft, iidx; while(1) { iret = recv(sock, chbuff, DEFAULT_BUFFER, 0); if (iret == 0) return 0; else if (iret == SOCKET_ERROR) { cout << "recv() error no: " << WSAGetLastError() << endl; return 0; } 34

35 chbuff[iret] = '\0'; Specyfikacja funkcji ClientThread() cout << "Liczba odebranych bajtów: " << chbuff << endl; inumleft = iret; iidx = 0; while(inumleft > 0) { iret = send(sock, &chbuff[iidx], inumleft, 0); if (iret == 0) return 0; else if (iret == SOCKET_ERROR) { cout << "send() error: " << WSAGetLastError() << endl; return 0; } inumleft -= iret; iidx += iret; } // koniec while(inumleft > 0) } // koniec while(1) } return 0; 35

36 Protokół TCP TCP, ang. Transmission Control Protocol. Specyfikacja RFC 793. TCP jest protokołem warstwy transportowej modelu OSI. Protokół TCP jest protokołem połączeniowym umożliwiającym wykrywanie błędów transmisji. Cechy protokołu TCP: stosuje pozytywne potwierdzanie odbioru danych (pole ACK=1) ma możliwość ustalania priorytetu przesyłania segmentów ma możliwość kontroli i usuwania błędów (np. retransmisji niepotwierdzonych pakietów). 36

37 Protokół TCP W procesie synchronizacji 'połączenia TCP' między nadawcą (A) i odbiorcą (B) wymieniane są trzy segmenty TCP. Uzgadnianie są wartości w polu 'Sequence number' w wysyłanych i potwierdzanych pakietach: (1) A ----> B flaga SYN=1, pole Sequence number=x, ISN nadawcy (A), Np. SEQ=X=100 (2) A <---- B flagi ACK=1, pole Sequence number=y, ISN odbiorcy (B), SYN=1 pole Acknowledgement number=x+1 Np. SEQ=Y=300, ACK=X+1=101 (3) A ----> B flaga ACK=1 pole Acknowledgement number=y+1, Np. SEQ=X+1=101, ACK=Y+1=301 37

38 Specyfikacja projektu Serwer TCP Echo Nazwa projektu: tcpserver Typ projektu: Win32 console application Lista plików: tcpserver.cpp Metoda kompilacji: Microsoft Visual C Utworzyć projekt typu 'Win32 console application w menu (-)File-> New -> Project-> Other languages-> Visual C++ -> win32 -> Win32 console application -> wpisać nazwę: tcpserver -> przycisk (OK) -> Okno Win32 application wizard tcpserver-> wybrać: Application settings -> wybrać: Empty project-> Przycisk (Finish). Konfiguracja projektu: (-)Project-> nazwa_projektu Properies... -> Configuration Properies-> Linker-> Input -> Additional Dependecies, wpisać: ws2_32.lib. Funkcjonalność: Aby uruchomić serwer należy w linii komend (Run-> cmd) wpisać: \> tcpserver Aby uruchomić klienta należy w linii komend (Run-> cmd) wpisać: \> tcpclient 38

39 Specyfikacja projektu. Serwer TCP Echo Pliki nagłówkowe: winsock2.h, iostream Funkcje programu: Funkcje API: Funkcja użytkownika: WSAStartup(), socket(), inet_addr(), bind(), listen(), accept(), recv(), send(), closesocket(), htonl(), ntohs(), inet_ntoa(), CloseHandle(), WSAGetLastError(), WSACleanup(). CreateThread() 39

40 Specyfikacja projektu. Serwer TCP Echo Zmienne programu: #define DEFAULT_PORT 5150 #define DEFAULT_BUFFER 4096 #define DEFAULT_IP_ADDRESS " " WSADATA wsd; SOCKET slisten, sclient; int iaddrsize; HANDLE hthread; DWORD dwthreadid; struct sockaddr_in local, client; int iport = DEFAULT_PORT; // numer portu do nasluchiwania BOOL binterface = FALSE; // nasluchiwanie na okreslonej karcie char szaddress[128] = DEFAULT_IP_ADDRESS; // adres IP karty do nasłuchowania 40

41 (1) Sprawdzenie czy zostały otwarte biblioteki WinSock. Czy WSAStartup(MAKEWORD(2,2), &wsd)!= 0? (2) Utworzenie gniazda. slisten = socket(af_inet, SOCK_STREAM,, IPPROTO_TCP ); (3) Inicjowanie obiektu local struktury sockaddr_in. local.sin_addr.s_addr = inet_addr(szaddress); local.sin_family = AF_INET; local.sin_port = htons(iport); (4) Kojarzenie adresu lokalnego hosta z gniazdem. bind(slisten, (struct sockaddr *)&local, sizeof(local)); (5) Nasłuchiwanie na połączenie i akceptacja połączenia. listen(slisten, 8); // 8 - maksymalna długość kolejki czekających połączeń sclient = accept(slisten, (struct sockaddr *)&client, &iaddrsize); (6) Utworzenie wątku dla połączenia z klientem. hthread = CreateThread(NULL, 0, ClientThread, (LPVOID)sClient, 0, &dwthreadid); (7) Zamknięcie wątku i sesji CloseHandle(hThread); closesocket(slisten); WSACleanup(); 41

42 Specyfikacja projektu. Klient TCP Echo Nazwa projektu: Typ projektu: Lista plików: tcpclient Win32 console application tcpclient.cpp Metoda kompilacji: Microsoft Visual C Utworzyć projekt typu 'Win32 console application w menu (-)File-> New -> Project-> Other languages-> Visual C++ -> win32 -> Win32 console application -> wpisać nazwę: tcpclient -> przycisk (OK) -> Okno Win32 application wizard tcpclient-> wybrać: Application settings -> wybrać: Empty project-> Przycisk (Finish). Konfiguracja projektu: (-)Project-> nazwa_projektu Properies... -> Configuration Properies-> Linker-> Input -> Additional Dependecies, wpisać: ws2_32.lib. Funkcjonalność: tcpclient łączy się z serwerem za pomcą protokołu TCP, wysyła wiadomość do serwer. Serwer odpowiada, odsyłając tą samą wiadomość (odpowiedź echa). Uruchomienie serwera: \>tcpserver Uruchomienie klienta: \>tcpclient 42

43 Specyfikacja projektu. Klient TCP Echo Pliki nagłówkowe: winsock2.h, iostream Funkcje programu: Funkcje API: Struktury programu: WSAStartup(), WSAGetLastError(), socket(), htons(), inet_addr(), gethostbyname(), connect(), send(), recv(), closesocket(), WSACleanup(). WSDATA, sockaddr_in, hostent 43

44 Specyfikacja projektu. Klient TCP Echo Zmienne programu: #define DEFAULT_COUNT 1 #define DEFAULT_SERVER_PORT 5150 #define DEFAULT_BUFFER 2048 #define DEFAULT_MESSAGE Test serwera TCP #define DEFAULT_SERVER //#define DEFAULT_SERVER host_name WSADATA SOCKET char int wsd; sclient; chbuffer[default_buffer]; iretsend; struct sockaddr_in struct hostent server; *host = NULL; char chserver[128] = DEFAULT_SERVER, // nazwa serwera chmessage[1024] = DEFAULT_MESSAGE; // tekst wiadomosci do wyslania int iport = DEFAULT_SERVER_PORT; // numer portu serwera do polaczenia DWORD dwcount = DEFAULT_COUNT; // liczba wyslanych wiadomosci 44

45 Klient TCP Echo. Struktura programu. (1) Sprawdzenie poprawności argumentów przekazywanych do programu. (2) Sprawdzenie czy zostały otwarte biblioteki WinSock Czy WSAStartup(MAKEWORD(2,2), &wsd)!= 0 (3) Utworzenie gniazda. sclient = socket(af_inet, SOCK_STREAM, IPPROTO_TCP); (4) Inicjowanie obiektu server struktury sockaddr_in. server.sin_family = AF_INET; server.sin_port = htons(iport); server.sin_addr.s_addr = inet_addr(chserver); (5) Pobranie adresu IP serwera gdy podano jego nazwę host = gethostbyname(chserver); 45

46 Klient TCP Echo. Struktura programu. (6) Przekazanie adresu IP serwera do obiektu server CopyMemory(&server.sin_addr, host->h_addr_list[0], host->h_length); (7) Połączenie i sprawdzenie czy połączenie zostało utworzone connect(sclient, (struct sockaddr *)&server, sizeof(server)) == SOCKET_ERROR (8) Wysłanie danych na serwer, ret liczba wysłanych bajtów. iret = send(sclient, chmessage, strlen(chmessage), 0); (9) Odebranie danych z serwera. iret = recv(sclient, chbuffer, DEFAULT_BUFFER, 0); (10) Zamkniecie gniazda i sesji closesocket(sclient); WSACleanup(); 46

47 ///////////////////////////////// // TCP serwer ///////////////////////////////// #include <winsock2.h> #include <iostream> using namespace std; #define DEFAULT_SERVER_PORT 5150 #define DEFAULT_BUFFER 4096 #define DEFAULT_IP_ADDRESS " " int main() { WSADATA wsd; SOCKET slisten, sclient; int iaddrsize; HANDLE hthread; DWORD dwthreadid; struct sockaddr_in local, client; int iport = DEFAULT_SERVER_PORT; // numer portu do nasluchiwania BOOL binterface = FALSE; // nasluchiwanie na okreslonej karcie char szaddress[128] = DEFAULT_IP_ADDRESS; // adres IP karty do nasluchowania if (WSAStartup(MAKEWORD(2,2), &wsd)!= 0) { cout << "WSAStartup() error" << endl; return 0; } 47

48 slisten = socket(af_inet, SOCK_STREAM, IPPROTO_IP); if (slisten == SOCKET_ERROR) { cout << "socket() error: " << WSAGetLastError() << endl; closesocket(slisten); WSACleanup(); return 0; } if (binterface) { local.sin_addr.s_addr = inet_addr(szaddress); } else local.sin_addr.s_addr = htonl(inaddr_any); local.sin_family = AF_INET; local.sin_port = htons(iport); if (bind(slisten, (struct sockaddr *)&local, sizeof(local)) == SOCKET_ERROR) { cout << "bind() error: " << WSAGetLastError() << endl; closesocket(slisten); WSACleanup(); return 0; } listen(slisten, 8); 48

49 while (1) { iaddrsize = sizeof(client); sclient = accept(slisten, (struct sockaddr *)&client, &iaddrsize); if (sclient == INVALID_SOCKET) { cout << "accept() error: " << WSAGetLastError() << endl; closesocket(slisten); WSACleanup(); return 0; } cout << "Accepted client: " << inet_ntoa(client.sin_addr) << ":" << ntohs(client.sin_port) << endl; hthread = CreateThread(NULL, 0, ClientThread,(LPVOID)sClient, 0, &dwthreadid); if (hthread == NULL) { cout << "CreateThread() error: " << GetLastError() << endl; return 0; } CloseHandle(hThread); } // koniec while (1) closesocket(slisten); WSACleanup(); return 0; } // koniec main() 49

50 ///////////////////////////// // TCP Echo client ///////////////////////////// #include <winsock2.h> #include <iostream> using namespace std; #define DEFAULT_COUNT 1 #define DEFAULT_SERVER_PORT 5150 #define DEFAULT_BUFFER 2048 #define DEFAULT_MESSAGE "Test serwera TCP" #define DEFAULT_SERVER " " // #define DEFAULT_SERVER "builder" //mozna wpisac nazwe hosta int main() { WSADATA SOCKET char int wsd; sclient; chbuffer[default_buffer]; iretsend; struct sockaddr_in server; struct hostent *host = NULL; char chserver[128] = DEFAULT_SERVER, // nazwa serwera chmessage[1024] = DEFAULT_MESSAGE; // tekst wiadomosci do wyslania na serwer int iport = DEFAULT_SERVER_PORT; // numer portu serwera do polaczenia DWORD dwcount = DEFAULT_COUNT; // liczba wyslanych wiadomosci 50

51 if (WSAStartup(MAKEWORD(2,2), &wsd)!= 0) { cout << "WSAStartup() error" << endl; return 0; } sclient = socket(af_inet, SOCK_STREAM, IPPROTO_TCP); if (sclient == INVALID_SOCKET) { cout << "socket() error no: " << WSAGetLastError() << endl; return 0; } server.sin_family = AF_INET; server.sin_port = htons(iport); server.sin_addr.s_addr = inet_addr(chserver); if (server.sin_addr.s_addr == INADDR_NONE) { host = gethostbyname(chserver); if (host == NULL) { cout << "Unable to resolve: " << chserver << endl; return 0; } CopyMemory(&server.sin_addr, host->h_addr_list[0], host->h_length); } if (connect(sclient, (struct sockaddr *)&server, sizeof(server)) == SOCKET_ERROR) { cout << "connect() error no: " << WSAGetLastError()<< endl; return 0; } 51

52 for(unsigned int i=0; i<dwcount; i++) { iretsend = send(sclient, chmessage, strlen(chmessage), 0); if (iretsend == 0) return 0; else if (iretsend == SOCKET_ERROR) { cout << "send() error no: " << WSAGetLastError() << endl; return 0; } cout << "Wyslano bajtow: " << iretsend << endl; iretsend = recv(sclient, chbuffer, DEFAULT_BUFFER, 0); if (iretsend == 0) return 0; else if (iretsend == SOCKET_ERROR) { cout << "recv() error no: " << WSAGetLastError() << endl; return 0; } chbuffer[iretsend] = '\0'; cout << "Odebrano " << iretsend << " bajtow. Msg: " << chbuffer << endl; } // end for() closesocket(sclient); WSACleanup(); return 0; } // end main() 52

Rodzina protokołów TCP/IP. Aplikacja: ipconfig.

Rodzina protokołów TCP/IP. Aplikacja: ipconfig. Rodzina protokołów TCP/IP. Aplikacja: ipconfig. dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Specyfikacja struktury FIXED_INFO Nazwa struktury:

Bardziej szczegółowo

Protokół ARP. dr Zbigniew Lipiński. Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl

Protokół ARP. dr Zbigniew Lipiński. Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Protokół ARP Aplikacja printarp dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Address Resolution Protocol ARP, (ang.) Address Resolution

Bardziej szczegółowo

Aplikacja Sieciowa. Najpierw tworzymy nowy projekt, tym razem pracować będziemy w konsoli, a zatem: File->New- >Project

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

Bardziej szczegółowo

3. Identyfikacja. SKŁADNIA #include <sys/socket.h> int getpeername(int socket, struct sockaddr *addr, int *addrlen);

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:

Bardziej szczegółowo

Protokół DNS. Aplikacja dnsquery

Protokół DNS. Aplikacja dnsquery Protokół DNS Domain Name System Aplikacja dnsquery dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Protokół DNS DNS, (ang.) Domain Name System.

Bardziej szczegółowo

Statystyka protokołów i połączeń sieciowych.

Statystyka protokołów i połączeń sieciowych. Statystyka protokołów i połączeń sieciowych. Aplikacja netstat. dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Statystyka połączeń sieciowych.

Bardziej szczegółowo

Oprogramowanie komunikacyjne dla Internetu rzeczy Laboratorium nr 4 komunikacja unicastowa IPv6

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

Bardziej szczegółowo

Literatura uzupełniająca: W. Richard Stevens, Programowanie zastosowań sieciowych w systemie Unix WNT 1998

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

Bardziej szczegółowo

Programowanie sieciowe

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

Bardziej szczegółowo

Gniazda BSD. Procesy w środowisku sieciowym. Gniazda podstawowe funkcje dla serwera. Gniazda podstawowe funkcje dla klienta

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

Bardziej szczegółowo

Internet Control Message Protocol Aplikacja ping

Internet Control Message Protocol Aplikacja ping Internet Control Message Protocol Aplikacja ping Zagadnienia: Protokół ICMP. Specyfikacja projektu ping. Specyfikacja struktur i funkcji programu. Struktura programu. dr Zbigniew Lipiński Instytut Matematyki

Bardziej szczegółowo

Programowanie Sieciowe 1

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:

Bardziej szczegółowo

Komunikacja sieciowa - interfejs gniazd

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

Bardziej szczegółowo

Programowanie aplikacji równoległych i rozproszonych. Wykład 4

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

Bardziej szczegółowo

Wielozadaniowość w systemie Microsoft Windows

Wielozadaniowość w systemie Microsoft Windows Wielozadaniowość w systemie Microsoft Windows mgr inż. Tomasz Jaworski tjaworski@kis.p.lodz.pl http://tjaworski.kis.p.lodz.pl/ Idea wielozadaniowości Proces główny Wątki Algorytm szeregowania ustala kolejność

Bardziej szczegółowo

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

Bardziej szczegółowo

Aplikacja Sieciowa wątki po stronie klienta

Aplikacja Sieciowa wątki po stronie klienta Aplikacja Sieciowa wątki po stronie klienta Na ostatnich zajęciach zajmowaliśmy się komunikacją pomiędzy klientem a serwerem. Wynikiem naszej pracy był program klienta, który za pomocą serwera mógł się

Bardziej szczegółowo

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

Bardziej szczegółowo

Iteracyjny serwer TCP i aplikacja UDP

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

Bardziej szczegółowo

Programowanie przy użyciu gniazdek

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

Bardziej szczegółowo

Gniazda. S. Samolej: Gniazda 1

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

Bardziej szczegółowo

2. Interfejs gniazd. 2.1. Gniazdo

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

Bardziej szczegółowo

Architektura typu klient serwer: uproszczony klient POP3

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

Bardziej szczegółowo

Gniazda BSD implementacja w C#

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

Bardziej szczegółowo

Gniazda UDP. Bartłomiej Świercz. Łódź, 3 kwietnia Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda UDP

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

Bardziej szczegółowo

socket(int domain, int type, int protocol)

socket(int domain, int type, int protocol) Co identyfikuje adres IP a co port? IP identyfikuje hosta w sieci port identyfikuje typ procesu (np. 21 FTP, 25 SMTP, 49 LOGIN) gniazdo identyfikuje unikalny nr połączenia Czym różni się deskryptor gniazda

Bardziej szczegółowo

Winsock. Sieci Komputerowe II Wyk ład 3

Winsock. Sieci Komputerowe II Wyk ład 3 Winsock Sieci Komputerowe II Wyk ład 3 Plan Przygotowanie środowiska Inicjacja Winsock Aplikacja klienta: tworzenie socketu łączenie z socketem serwera wysyłanie i odbieranie danych rozłączanie klienta

Bardziej szczegółowo

Programowanie sieciowe

Programowanie sieciowe Programowanie sieciowe email: dawid@us.edu.pl Programowanie warstwy transportu. - Berkeley sockets. - koncepcja gniazda - bibliteka sockets (connect(),socket(),bind(),listen(),accept(),read(),write() )

Bardziej szczegółowo

Gniazda surowe. Bartłomiej Świercz. Łódź,9maja2006. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda surowe

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

Bardziej szczegółowo

Klient-Serwer Komunikacja przy pomocy gniazd

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

Bardziej szczegółowo

Gniazda BSD. komunikacja bezpołączeniowa

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

Bardziej szczegółowo

1. Model klient-serwer

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

Bardziej szczegółowo

Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne

Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne Zdalne wywołania procedur Jarosław Kuchta Programowanie Współbieżne Podstawy RPC Remote Procedure Call Wywołanie procedur jednego procesu z innego procesu. Proces wywoływany serwer Proces wywołujący -

Bardziej szczegółowo

TCP - receive buffer (queue), send buffer (queue)

TCP - receive buffer (queue), send buffer (queue) BSD sockets c.d. TCP - receive buffer (queue), send buffer (queue) Z każdym gniazdem sieciowym są skojarzone: Bufor do odbierania danych (ang. receive buffer) Przychodzące dane są umieszczane w buforze

Bardziej szczegółowo

ZESZYTY ETI ZESPOŁU SZKÓŁ W TARNOBRZEGU Nr 1 Seria: Teleinformatyka 2013

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

Bardziej szczegółowo

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi) Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi) Ćwiczenie dziesiąte Temat: Gniazda BSD protokoły internetowe Opracowanie: mgr in ż. Arkadiusz Chrobot Wprowadzenie 1. Usługi sieciowe w

Bardziej szczegółowo

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej SEGMENT TCP CZ. I Numer portu źródłowego (ang. Source port), przeznaczenia (ang. Destination port) identyfikują aplikacje wysyłającą odbierającą dane, te dwie wielkości wraz adresami IP źródła i przeznaczenia

Bardziej szczegółowo

MODEL WARSTWOWY PROTOKOŁY TCP/IP

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

Bardziej szczegółowo

Komunikacja międzyprocesowa. Krzysztof Banaś Systemy rozproszone 1

Komunikacja międzyprocesowa. Krzysztof Banaś Systemy rozproszone 1 Komunikacja międzyprocesowa Krzysztof Banaś Systemy rozproszone 1 Komunikacja międzyprocesowa Dla funkcjonowania systemów rozproszonych konieczna jest sprawna komunikacja pomiędzy odległymi procesami Podstawowym

Bardziej szczegółowo

Krótkie wprowadzenie do korzystania z OpenSSL

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

Bardziej szczegółowo

Podstawowe typy serwerów

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

Bardziej szczegółowo

Programowanie współbieżne. Tworzenie i obsługa semaforów oraz wątków przy użyciu funkcji Windows API.

Programowanie współbieżne. Tworzenie i obsługa semaforów oraz wątków przy użyciu funkcji Windows API. Programowanie współbieżne Tworzenie i obsługa semaforów oraz wątków przy użyciu funkcji Windows API. Cel zadania. Celem zadania jest poznanie podstawowych funkcji Windows API umożliwiających tworzenie

Bardziej szczegółowo

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski Sieci komputerowe Wykład 7: Transport: protokół TCP Marcin Bieńkowski Instytut Informatyki Uniwersytet Wrocławski Sieci komputerowe (II UWr) Wykład 7 1 / 23 W poprzednim odcinku Niezawodny transport Algorytmy

Bardziej szczegółowo

Tunelowanie, kapsułkowanie, XDR. 1. Transmisja tunelowa i kapsułkowanie serwery proxy. 2. Zewnętrzna reprezentacja danych XDR.

Tunelowanie, kapsułkowanie, XDR. 1. Transmisja tunelowa i kapsułkowanie serwery proxy. 2. Zewnętrzna reprezentacja danych XDR. Tunelowanie, kapsułkowanie, XDR 1. Transmisja tunelowa i kapsułkowanie serwery proxy. 2. Zewnętrzna reprezentacja danych XDR. 1 Transmisja tunelowa i kapsułkowanie Sieci komputerowe rozwijały się stopniowo

Bardziej szczegółowo

Tworzenie aplikacji rozproszonej w Sun RPC

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

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Komputery i Systemy Równoległe Jędrzej Ułasiewicz 1

Komputery i Systemy Równoległe Jędrzej Ułasiewicz 1 Komputery i Systemy Równoległe Jędrzej Ułasiewicz 1 1 Interfejs gniazdek Jednolity interfejs API (Application Program Interface) do mechanizmów komunikacji sieciowej. Wprowadzony w wersji Unixa BSD 4.2

Bardziej szczegółowo

SUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq)

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Projektowanie oprogramowania systemów KOMUNIKACJA SIECIOWA I SYSTEMY RPC

Projektowanie oprogramowania systemów KOMUNIKACJA SIECIOWA I SYSTEMY RPC Projektowanie oprogramowania systemów KOMUNIKACJA SIECIOWA I SYSTEMY RPC plan programowanie sieciowe BSD/POSIX Socket API systemy RPC interfejsy obiektowe CORBA DCOM RMI WebServices WSDL/SOAP XML-RPC REST

Bardziej szczegółowo

Standardy programowania protokołów komunikacyjnych Laboratorium nr 5 komunikacja multicastowa IPv6

Standardy programowania protokołów komunikacyjnych Laboratorium nr 5 komunikacja multicastowa IPv6 Standardy programowania protokołów komunikacyjnych Laboratorium nr 5 komunikacja multicastowa IPv6 Celem ćwiczenia jest zdobycie umiejętności programowania komunikacji multicastowej za pomocą protokołu

Bardziej szczegółowo

PROTOKOŁY WARSTWY TRANSPORTOWEJ

PROTOKOŁY WARSTWY TRANSPORTOWEJ PROTOKOŁY WARSTWY TRANSPORTOWEJ Na bazie protokołu internetowego (IP) zbudowane są dwa protokoły warstwy transportowej: UDP (User Datagram Protocol) - protokół bezpołączeniowy, zawodny; TCP (Transmission

Bardziej szczegółowo

Instytut Teleinformatyki

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

Bardziej szczegółowo

Ćwiczenie 2. Obsługa gniazd w C#. Budowa aplikacji typu klient-serwer z wykorzystaniem UDP.

Ćwiczenie 2. Obsługa gniazd w C#. Budowa aplikacji typu klient-serwer z wykorzystaniem UDP. Ćwiczenie 2. Obsługa gniazd w C#. Budowa aplikacji typu klient-serwer z wykorzystaniem UDP. Wprowadzenie Gniazdo (ang. socket) z naszego punktu widzenia (czyli programów w.net) reprezentuje najniższy poziom

Bardziej szczegółowo

Mechanizmy pracy równoległej. Jarosław Kuchta

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

Bardziej szczegółowo

Tworzenie i zarządzanie wątkami

Tworzenie i zarządzanie wątkami Tworzenie i zarządzanie wątkami utworzenie wątku HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpthreadattributes, //pointer to thread security attributes DWORD dwstacksize, //initial thread stack size, in

Bardziej szczegółowo

Sieci komputerowe Warstwa transportowa

Sieci komputerowe Warstwa transportowa Sieci komputerowe Warstwa transportowa 2012-05-24 Sieci komputerowe Warstwa transportowa dr inż. Maciej Piechowiak 1 Wprowadzenie umożliwia jednoczesną komunikację poprzez sieć wielu aplikacjom uruchomionym

Bardziej szczegółowo

Laboratorium - Używanie programu Wireshark do obserwacji mechanizmu uzgodnienia trójetapowego TCP

Laboratorium - Używanie programu Wireshark do obserwacji mechanizmu uzgodnienia trójetapowego TCP Laboratorium - Używanie programu Wireshark do obserwacji mechanizmu uzgodnienia trójetapowego Topologia Cele Część 1: Przygotowanie Wireshark do przechwytywania pakietów Wybór odpowiedniego interfejsu

Bardziej szczegółowo

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

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

Bardziej szczegółowo

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ INTERNET PROTOCOL (IP) INTERNET CONTROL MESSAGE PROTOCOL (ICMP) WSTĘP DO SIECI INTERNET Kraków, dn. 7 listopada 2016 r. PLAN IPv4: schemat nagłówka ICMP: informacje

Bardziej szczegółowo

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

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.

Bardziej szczegółowo

Instytut Teleinformatyki

Instytut Teleinformatyki Instytut Teleinformatyki Wydział Inżynierii Elektrycznej i Komputerowej Politechnika Krakowska programowanie usług sieciowych Opcje IP i gniazda surowe laboratorium: 10 Kraków, 2014 10. Programowanie Usług

Bardziej szczegółowo

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski Transport część 2: protokół TCP Sieci komputerowe Wykład 6 Marcin Bieńkowski Protokoły w Internecie warstwa aplikacji HTTP warstwa transportowa SMTP TCP warstwa sieciowa warstwa łącza danych warstwa fizyczna

Bardziej szczegółowo

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski Transport część 2: protokół TCP Sieci komputerowe Wykład 6 Marcin Bieńkowski Protokoły w Internecie warstwa aplikacji HTTP SMTP DNS NTP warstwa transportowa TCP UDP warstwa sieciowa IP warstwa łącza danych

Bardziej szczegółowo

Sieci komputerowe - Protokoły warstwy transportowej

Sieci komputerowe - Protokoły warstwy transportowej Piotr Kowalski KAiTI - Protokoły warstwy transportowej Plan i problematyka wykładu 1. Funkcje warstwy transportowej i wspólne cechy typowych protokołów tej warstwy 2. Protokół UDP Ogólna charakterystyka,

Bardziej szczegółowo

Programowanie sieciowe

Programowanie sieciowe Programowanie sieciowe Wykład dla studentów Informatyki Stosowanej i Fizyki Komputerowej UJ 2014/2015 Michał Cieśla pok. D-2-47, email: michal.ciesla@uj.edu.pl konsultacje: środy 10-12 http://users.uj.edu.pl/~ciesla/

Bardziej szczegółowo

Programowanie. Ćwiczenie Język C. Środowisko programowania Visual Studio

Programowanie. Ćwiczenie Język C. Środowisko programowania Visual Studio Programowanie Ćwiczenie Język C. Środowisko programowania Visual Studio Tematy ćwiczenia praca ze środowiskiem, tworzenie i uruchomienie programu, struktura programu, deklaracje i definicje typy standardowe,

Bardziej szczegółowo

Adresy w sieciach komputerowych

Adresy w sieciach komputerowych Adresy w sieciach komputerowych 1. Siedmio warstwowy model ISO-OSI (ang. Open System Interconnection Reference Model) 7. Warstwa aplikacji 6. Warstwa prezentacji 5. Warstwa sesji 4. Warstwa transportowa

Bardziej szczegółowo

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Akademickie Centrum Informatyki PS. Wydział Informatyki PS Akademickie Centrum Informatyki PS Wydział Informatyki PS Akademickie Centrum Informatyki Wydział Informatyki P.S. Warstwy transmisyjne Protokoły sieciowe Krzysztof Bogusławski tel. 449 41 82 kbogu@man.szczecin.pl

Bardziej szczegółowo

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

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

Bardziej szczegółowo

TRX API opis funkcji interfejsu

TRX API opis funkcji interfejsu TRX Krzysztof Kryński Cyfrowe rejestratory rozmów seria KSRC TRX API opis funkcji interfejsu Kwiecień 2013 Copyright TRX TRX ul. Garibaldiego 4 04-078 Warszawa Tel. 22 871 33 33 Fax 22 871 57 30 www.trx.com.pl

Bardziej szczegółowo

ZiMSK dr inż. Łukasz Sturgulewski, luk@kis.p.lodz.pl, http://luk.kis.p.lodz.pl/ DHCP

ZiMSK dr inż. Łukasz Sturgulewski, luk@kis.p.lodz.pl, http://luk.kis.p.lodz.pl/ DHCP ZiMSK dr inż. Łukasz Sturgulewski, luk@kis.p.lodz.pl, http://luk.kis.p.lodz.pl/ dr inż. Artur Sierszeń, asiersz@kis.p.lodz.pl dr inż. Andrzej Frączyk, a.fraczyk@kis.p.lodz.pl DHCP 1 Wykład Dynamiczna konfiguracja

Bardziej szczegółowo

Sockety TCP/IP - podstawy. Sieci Komputerowe II Wyk ład 2

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ę

Bardziej szczegółowo

Opis protokołu RPC. Grzegorz Maj nr indeksu:

Opis protokołu RPC. Grzegorz Maj nr indeksu: Opis protokołu RPC Grzegorz Maj nr indeksu: 236095 1 Streszczenie Niniejszy dokument opisuje specyfikację protokołu RQP (Remote Queues Protocol). W jego skład wchodzą: opis celów protokołu; opis założeń

Bardziej szczegółowo

Tryb bezpołączeniowy (datagramowy)

Tryb bezpołączeniowy (datagramowy) Tutaj trochę szerzej opisałam mechanizm gniazdek. 3 tematy wymienione poniŝej przeplatają się ze sobą więc wrzuciłam je do jednego worka i przedstawiłam w takim porządku, który wydawał mi się najbardziej

Bardziej szczegółowo

Programowanie Sieciowe 1

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

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone Programowanie współbieżne i rozproszone WYKŁAD 11 dr inż. CORBA CORBA (Common Object Request Broker Architecture) standard programowania rozproszonego zaproponowany przez OMG (Object Management Group)

Bardziej szczegółowo

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

Bardziej szczegółowo

Architektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1

Architektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1 Architektury systemów rozproszonych LABORATORIUM Ćwiczenie 1 Temat: Aplikacja klient-serwer - implementacja w środowisku QT Creator. Przykładowy projekt aplikacji typu klient - serwer został udostępniony

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC 27. października 2010

Zdalne wywoływanie procedur RPC 27. października 2010 Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_ proces (int pid){ int stat; stat

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_proces

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij_proces (int

Bardziej szczegółowo

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark Topologia Cele Część 1: Zapisanie informacji dotyczących konfiguracji IP komputerów Część 2: Użycie programu Wireshark do przechwycenia

Bardziej szczegółowo

Monitorowanie Sieci nonblocking content packet filtering

Monitorowanie Sieci nonblocking content packet filtering Monitorowanie Sieci nonblocking content packet filtering praca inŝynierska prowadzący: prof. dr hab. inŝ. Zbigniew Kotulski Michał Zarychta 1 Plan prezentacji ZałoŜenia projektu Sniffer Technologie WinPcap

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Tytuł: Instrukcja obsługi Modułu Komunikacji internetowej MKi-sm TK / 3001 / 016 / 002. Wersja wykonania : wersja oprogramowania v.1.

Tytuł: Instrukcja obsługi Modułu Komunikacji internetowej MKi-sm TK / 3001 / 016 / 002. Wersja wykonania : wersja oprogramowania v.1. Zakład Elektronicznych Urządzeń Pomiarowych POZYTON sp. z o. o. 42-200 Częstochowa ul. Staszica 8 p o z y t o n tel. : (034) 361-38-32, 366-44-95, 364-88-82, 364-87-50, 364-87-82, 364-87-62 tel./fax: (034)

Bardziej szczegółowo

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1 Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij_proces (int

Bardziej szczegółowo

Protokoły sieciowe - TCP/IP

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

Bardziej szczegółowo

IPC: Kolejki komunikatów

IPC: Kolejki komunikatów IPC: Kolejki komunikatów Systemy Operacyjne 2 laboratorium Mateusz Hołenko 7 listopada 2011 Plan zajęć 1 Mechanizmy IPC kolejki komunikatów pamięć współdzielona semafory 2 Kolejki komunikatów kolejka komunikat

Bardziej szczegółowo

Wybrane działy Informatyki Stosowanej

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

Bardziej szczegółowo

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

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5. Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5. Schemat Internetu R R R R R R R 2 Model Internetu 3 Protokoły komunikacyjne stosowane w sieci Internet Protokoły warstwy

Bardziej szczegółowo

ARP Address Resolution Protocol (RFC 826)

ARP Address Resolution Protocol (RFC 826) 1 ARP Address Resolution Protocol (RFC 826) aby wysyłać dane tak po sieci lokalnej, jak i pomiędzy różnymi sieciami lokalnymi konieczny jest komplet czterech adresów: adres IP nadawcy i odbiorcy oraz adres

Bardziej szczegółowo