TECN.PROG.SIST.INF. UDP socket in Windows. Roberta Gerboni

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "TECN.PROG.SIST.INF. UDP socket in Windows. Roberta Gerboni"

Transcript

1 Roberta Gerboni

2 Schema logico della comunicazione UDP in linguaggio C mediante Datagram socket. bind () Con i datagram socket (SOCK_DGRAM) viene realizzata una comunicazine che permette di scambiare dati senza connessione (i messaggi contengono l indirizzo di destinazione e di provenienza); non viene garantito l ordine e neppure l arrivo dei pacchetti. 2

3 I programmi in linguaggio C per utilizzare le diverse funzioni che consentono di gestire i socket devono includere la libreria WinSock2.h. ATTENZIONE: La API di Windows WinSock per la gestione dei socket non fa parte del sistema operativo, ma è una libreria esterna dinamica (Dynamic Link Library) per questo motivo è necessario richiamare: una funzione di inizializzazione WSAStartup ( ) prima dell uso delle funzioni API una funzione di terminazione WSACleanup ( ) dopo l uso delle funzioni API WSADATA wsadata; // Crea una variabile di nome wsadata di tipo WSADATA // inizializzazione WinSock (versione 2.2) if (WSAStartup(0x0202, &wsadata)!= 0) return -1; // apertura socket UDP if ((socket_id = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP))==INVALID_SOCKET) { WSACleanup(); return -1; }... 3

4 Client UDP Per gestire una comunicazione di rete con il protocollo UDP in linguaggio C, creiamo una funzione per inizializzare il socket che chiamiamo: int UDP_init (unsigned short port_number) che: UDP_init ( ) // Dichiara alcune strutture dati // inizializza WinSock (versione 2.2) // apre un socket UDP // inizializza la struttura del socket aperto (indirizzo IP locale e Numero porta ricevuto come parametro) // associa il socket aperto ad un numero di porta (bind) // imposta il socket come non bloccante UDP_send( ) 4

5 La funzione UDP_init( ) // Dichiarazione di alcune strutture dati // Chiamata per poter usare le API SOCKET socket_id; // variabile globale che identifica il socket del mittente // Apertura socket UDP // Inizializzazione struttura del socket // associazione del socket aperto ad un numero di porta // impostazione del socket come non bloccante 5

6 WSADATA e WSAStartup( ) 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; WSA (Windows Sockets API ) La struttura WSADATA contiene informazioni sulla implementazione dei Socket Windows. La funzione WSAStartup( ) consente ad un processo di usare la libreria DLL Winsock restituendo il puntatore alla struttura dati WSADATA. int WSAStartup ( _In_ WORD wversionrequested, _Out_ LPWSADATA lpwsadata ); La versione più alta della specifica Windows Sockets che il chiamante può utilizzare. Il byte più significativo specifica il numero secondario della versione; il byte meno significativo specifica il numero principale di versione. Viene restituito il puntatore alla struttura dati WSADATA che viene riempita dalla funzione e quindi conterrà le caratteristiche della DLL Windows Sockets. 6

7 (funzione UDP_init( )) Dichiarazione delle strutture dati struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; }; struct in_addr { u_long s_addr; //32-bit long }; struct sockaddr { u_short sa_family; //16-bit long char sa_data[14]; }; Valori sin_family = AF_INET sin_port : port # ( ) sin_addr.s_addr : IP address sin_zero : non utilizzato Variabile add di tipo sockaddr_in 7

8 Apre (crea) un socket specificando: (funzione UDP_init( )) SOCKET socket (int family, int type, int protocol) la famiglia, il tipo, il protocollo che si vuole usare Parametri Family Type Protocol Valori AF_UNIX connessione all interno della stessa macchina AF_INET connessione con un altra macchina utilizzando il protocollo IPv4; AF_INET6 con il protocollo IPv6. SOCK_STREAM connessione TCP per flusso di byte SOCK_DGRAM connessione UDP per datagram IPPROTO_TCP è usato quando il tipo è SOCK_STREAM e la famiglia AF_INET o AF_INET6 IPPROTO_UDP è usato quando il tipo è SOCK_DGRAM e la famiglia AF_INET o AF_INET6 Valore restituito: se non si verificano errori, il riferimento (numero naturale) al descrittore del nuovo socket creato. In caso di errore, viene restituito un valore di INVALID_SOCKET, che può essere recuperato chiamando WSAGetLastError(). 8

9 (funzione UDP_init( )) bind associa un socket ad un numero di porta specificato. int bind (_In_ SOCKET s, _In_ struct sockaddr * add, _In_ int dim ) Identificatore creato per un socket, ma non ancora associato ad un socket. Puntatore a una struttura di tipo sockaddr che contiene l'indirizzo locale (IP e numero porta). Riassumendo: 1. Quando un socket viene creato con la funzione socket( ) viene generato un identificatore (numero) del socket aperto (ad esempio della famiglia AF_INET), ma non ha ancora alcun indirizzo assegnato (IP e numero porta). 2. Si inizializza la struttura add di tipo sockaddr_in con l indirizzo IP e Numero porta (campi: sin_family, sin_port, sin_addr. s_addr) Dimensione in byte della struttura add che contiene l indirizzo locale del socket Valore restituito: se non si verificano errori restituisce zero. In caso di errore, restituisce SOCKET_ERROR, che può essere recuperato chiamando WSAGetLastError(). 3. Infine: bind ( ) associa la struttura add, della quale si passa il puntatore, al riferimento s. Se il numero di porta specificato è zero, il sistema assegna un numero di porta dinamico che in Windows Vista e versioni successive, è un valore compreso tra e Specificare zero è consigliato per le applicazioni client. In questo caso la funzione getsockname ( ) fornisce l'unico modo per determinare l'associazione locale (IP e numero di porta) che è stata impostata dal sistema. 9

10 (funzione UDP_init( )) Struttura add di tipo sockaddr_in 10

11 TECN.PROG.SIST.INF. Parameters UDP socket in Windows (funzione UDP_init( )) ioctlsocket controlla la modalità di I/O di un socket. int ioctlsocket (_In_ SOCKET s, _In_ long cmd, _Inout_ u_long * argp ) Identificatore di un socket. Operazione da effettuare (FIONBIO FIONREAD.) Questa funzione può essere utilizzata per qualsiasi socket. Viene utilizzata per impostare o recuperare i parametri operativi legati al socket, indipendentemente da quale sia il protocollo e dal sottosistema di comunicazione. Alcuni comandi supportati nel parametro cmd sono: FIONBIO Puntatore ad un valore (0 o 1) per disabilitare o abilitare la modalità non bloccante. [Non-0 (ad es. 1) per abilitare la modalità non bloccante] Valore restituito: se non si verificano errori restituisce zero. In caso di errore, restituisce SOCKET_ERROR, che può essere recuperato chiamando WSAGetLastError(). Se utilizzato con un parametro argp diverso da zero abilita la modalità non bloccante del socket identificato da s. Se la variabile puntata dal parametro argp è zero non bloccante è disattivato. Quando viene creato un socket, funziona in modalità bloccante per default. FIONREAD utilizzato per determinare la quantità di dati in sospeso nel buffer di ingresso della rete che possono essere letti dal socket s. La funzione ioctlsocket memorizza tale valore come risultato nella variabile puntatata da argp. 11

12 (funzione UDP_init( )) Socket bloccanti e non bloccanti Nella libreria Winsock sono disponibili due modelli di I/O per i socket uno bloccante e uno non bloccante. Un modello di I/O è il metodo utilizzato per controllare il flusso del programma che si occupa di gestire ingresso e uscita da e verso rete. Originariamente, le Berkeley socket hanno utilizzato il modello di I/O bloccante che prevede che tutte le funzioni socket operino in modo sincrono, ossia, una funzione resta bloccata fino a quando l'operazione di I/O non è terminata. Questo tipo di comportamento è non gradito in ambiente Windows e per questo sono state realizzate delle funzioni, come ad esempio ioctlsocket( ), per consentire l uso di socket non bloccati. Quando un socket è in modalità non-blocking, le funzioni Winsock che operano su di esso non potranno mai bloccare il processo chiamante in un attesa indefinita o per parecchio tempo, ma ritornano sempre subito senza inviare dati, con il seguente significato: non ci sono dati pronti per essere spediti magari semplicemente perché non è il momento giusto per eseguire l'operazione. e in questo caso viene restituito il codice di errore Winsock: WSAEWOULDBLOCK. 12

13 Socket bloccante (funzione UDP_init( )) Inizio Copia Quando il socket deve effettuare un operazione di I/O, se questa non puo essere terminata immediatamente il processo si mette in attesa aspettando la fine dell operazione. 13

14 (funzione UDP_init( )) Socket non bloccante WSA WSA Inizio Copia Se l operazione di input non puo essere terminata perché non c e nemmeno un byte per il socket TCP o nemmeno un datagram per il socket UDP, la funzione ritorna immediatamente al chiamante restituendo il codice d errore WSAEWOULDBLOCK che letteralmente significa L errore, avrebbe bloccato. In realtà non è un vero errore, è come se rispondesse Io non posso soddisfare la richiesta in questomomento, riprova più tardi. 14

15 Client UDP Dopo aver inizializzato il socket con la funzione UDP_init( ) viene richiamata la funzione: int UDP_send( unsigned long ip_address, unsigned short port_number, unsigned char data[], int byte) che: // Dichiara la struttura che conterrà l indir. del destinatario // inizializza la struttura del socket aperto (indirizzo IP e Numero porta ricevuto come parametro) // trasmette il datagram UDP_send ( ) UDP_receive( ) 15

16 La funzione UDP_send( ) Del destinatario Stringa da inviare e sua lunghezza in byte // Dichiarazione struttura add // Inizializzazione struttura del socket del destinatario SOCKET socket_id; // variabile globale che identifica il socket del mittente // Trasmissione del datagram 16

17 (funzione UDP_send( )) Invia dati a uno specifico destinatario mediante un socket UDP. Identificatore del socket di invio (mittente) int sendto( _In_ SOCKET s, _In_ const char *buf, _In_ int len, _In_ int flags, _In_ const struct sockaddr *to, _In_ int tolen ) Puntatore al buffer contenente i dati da inviare e la lunghezza in byte I flags specificano delle modalità di funzionamento avanzate (0=standard). Puntatore opzionale a una struttura di tipo sockaddr che contiene l'indirizzo del socket di destinazione (numero porta e indirizzo IP.) Dimensione in byte della struttura puntata da to. Valore restituito: se non si verificano errori restituisce il numero di byte inviati che può essere minore di len. In caso di errore, restituisce SOCKET_ERROR, che può essere recuperato chiamando WSAGetLastError(). Se un socket viene aperto (funzione socket( )) e poi viene fatta una chiamata sendto( ) Windows Sockets esegue una chiamata implicita della funzione bind( ). 17

18 Client UDP Dopo aver inviato una richiesta al server utilizzando la funzione UDP_send( ), il client attiva la funzione di ricezione per avere una risposta dal server stesso. int UDP_receive( unsigned long *ip_address, unsigned short *port_number, unsigned char data[], int size) UDP_receive ( ) // Dichiara la struttura che conterrà l indir. del mittente // si pone in ricezione del datagram (non bloccante) // estrae, dalla struttura ricevuta insieme al datagram, l indirizzo IP e numero porta del mittente UDP_close( ) 18

19 La funzione UDP_receive( ) Del mittente Buffer che conterrà i dati ricevuti e sua dimensione in byte // Dichiarazione struttura add // Ricezione del datagram ntohl() (network to host-long) trasforma l indirizzo IP da formato Big Endian (formato neutro della rete) in un long integer (formato host). Il numero n (che indica il numero di byte ricevuti) restituito dalla funzione recvfrom( ) viene anche restituito al programma chiamante. Dalla struttura add ricevuta dalla funzione recvfrom( ) vengono estratti l indirizzo IP e il numero di porta e assegnati rispettivamente alle variabili puntate da ip_address e port_number che saranno restituite dalla funzione UDP_receive perché passate per indirizzo. 19

20 (funzione UDP_receive( )) Riceve un datagram da un mittente mediante un socket UDP e cattura anche l indirizzo di provenienza. Identificatore del socket di ricezione. int recvfrom( _In_ SOCKET s, _Out_ char *buf, _In_ int len, _In_ int flags, _Out_ struct sockaddr *from, _Inout_opt_ int *fromlen) Puntatore al buffer che conterrà i dati ricevuti e la dimensione in byte del buffer I flags specificano delle modalità di funzionamento avanzate (0=standard). Puntatore opzionale a una struttura di tipo sockaddr che contiene l'indirizzo del socket del mittente (numero porta e indirizzo IP) per poter rispondere. Puntatore alla dimensione in byte della struttura puntata da from. Valore restituito: se non si verificano errori restituisce il numero di byte ricevuti. Se la connessione è stata chiusa normalmente, il valore restituito è zero. In caso di errore, restituisce SOCKET_ERROR, che può essere recuperato chiamando WSAGetLastError(). La funzione recvfrom( ) legge i dati in arrivo su socket connessi e non connessi anche se viene in genere utilizzata con socket senza connessione. 20

21 Client UDP Dopo aver ricevuto i dati con UDP_receive( ) viene richiamata la funzione di chiusura del socket che consente di teminare il processo client. void UDP_close( ) // Chiude il socket. UDP_close ( ) // termina l uso della WinSock2 consentendo di liberare tutte le risorse allocate per utilizzare i servizi di Windows Socket. 21

22 Server UDP UDP_init ( ) UDP_receive ( ) UDP_send ( ) UDP_close ( ) 22

23 Server UDP Indirizzo IP e numero di porta del mittente buffer contenente i dati ricevuti dal mittente Indirizzo IP e numero di porta del destinatario 23

24 Client UDP 24

25 Client UDP 25

C UDP in Windows p53 - variante 1

C UDP in Windows p53 - variante 1 // UDPclient.c C UDP in Windows p53 - variante 1 /* Testo del problema Il processo client invia la stringa "INVIAMI UN NUMERO" diverse volte in un intervallo di tempo di 1 secondo ad un processo server

Dettagli

L uso di Socket UDP. Usiamo le API Winsock incluse in <Winsock.h> A.A. 2005/06. Dott.ssa Valeria Carofiglio

L uso di Socket UDP. Usiamo le API Winsock incluse in <Winsock.h> A.A. 2005/06. Dott.ssa Valeria Carofiglio L uso di Socket UDP Usiamo le API Winsock incluse in A.A. 2005/06 TCP TCP vs. UDP UDP Interazione UDP Client/Server Server 1. (Inizializzare una WSA) 2. Creare una socket 3. Assegnare un local

Dettagli

TECN.PROG.SIST.INF. TCP socket in Windows. 2015 - Roberta Gerboni

TECN.PROG.SIST.INF. TCP socket in Windows. 2015 - Roberta Gerboni 2015 - Roberta Gerboni Schema logico della comunicazione TCP in linguaggio C mediante bytestream socket. Parte asimmetrica Ruolo passivo bind () Parte asimmetrica Ruolo attivo Parte simmetrica Parte simmetrica

Dettagli

Creare una applicazione Winsock di base

Creare una applicazione Winsock di base Creare una applicazione Winsock di base Usiamo le API Winsock incluse in Creare un progetto per una Socket Windows (in Dev C++) Selezionare la file New Projects Selezionare Empty Project Salvare

Dettagli

I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE. Classe: 5Ci

I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE. Classe: 5Ci I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE Disciplina: Tecnologie e Progettazione di Sistemi Informatici e di Telecomunicazione Cognome e Nome:

Dettagli

Scrittura dei programmi applicativi di rete

Scrittura dei programmi applicativi di rete Scrittura dei programmi applicativi di rete Contenuti del corso La progettazione delle reti Il routing nelle reti IP Il collegamento agli Internet Service Provider e problematiche di sicurezza Analisi

Dettagli

RETI DI CALCOLATORI. Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI. Facoltà di Ingegneria Università degli Studi di Udine

RETI DI CALCOLATORI. Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI. Facoltà di Ingegneria Università degli Studi di Udine RETI DI CALCOLATORI Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine 2003 Pier Luca Montessoro (si veda la nota a pagina 2) 1 Nota di Copyright Questo

Dettagli

L uso di Socket UDP. TCP vs. UDP UDP

L uso di Socket UDP. TCP vs. UDP UDP L uso di Socket UDP TCP TCP vs. UDP UDP 1 Interazione UDP Client/Server Server 1. Creare un socket 2. Assegnare un local address al socket 3. Iterativamente: a. Inviare e ricevere dati 4. Chiudere il socket

Dettagli

Reti (già Reti di Calcolatori )

Reti (già Reti di Calcolatori ) Reti (già Reti di Calcolatori ) Cenni di Socket Programming Renato Lo Cigno http://disi.unitn.it/locigno/index.php/teaching-duties/computer-networks Socket API Programmazione dei socket Obiettivo:imparare

Dettagli

TECN.PROG.SIST.INF. I Socket Roberta Gerboni

TECN.PROG.SIST.INF. I Socket Roberta Gerboni 2015 - Roberta Gerboni Socket e porte I sistemi operativi multitasking possono fare girare contemporaneamente più processi dove ogni processo può rendere disponibili anche più servizi. Questi devono essere

Dettagli

Laboratorio di Programmazione in Rete

Laboratorio di Programmazione in Rete Laboratorio di Programmazione in Rete a.a. 2005/2006 http://www.di.uniba.it/~lisi/courses/prog-rete/prog-rete0506.htm dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì ore 10-12

Dettagli

Scrittura dei programmi applicativi di rete

Scrittura dei programmi applicativi di rete Nota di Copyright RETI DI CALCOLATORI Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Questo insieme di trasparenze (detto nel seguito slide) è protetto

Dettagli

Programmazione di Rete

Programmazione di Rete Programmazione di Rete Ing. Carlo Nobile Socket slide n 1 Sommario Berkeley's socket Socket UDP: funzioni fondamentali Esempio applicazione: Listener Sender Socket non bloccanti Indirizzo IP e Porta Sicurezza

Dettagli

Esercitazione [7] Client/Server con Socket

Esercitazione [7] Client/Server con Socket Esercitazione [7] Client/Server con Socket Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Federico Lombardi - lombardi@dis.uniroma1.it Sistemi di Calcolo - Secondo

Dettagli

Interazione (TCP) Client-Server con le socket

Interazione (TCP) Client-Server con le socket Interazione (TCP) Client-Server con le socket Interazione TCP Client/Server Server 1. Creare una socket 2. Assegnare un local address alla socket 3. Settare la socket all ascolto 4. Iterativamente: a.

Dettagli

Interazione (TCP) Client-Server con le socket

Interazione (TCP) Client-Server con le socket Interazione (TCP) Client-Server con le socket D. Gendarmi Interazione TCP Client/Server Server 2. Assegnare un local address alla socket 3. Settare la socket all ascolto 4. Iterativamente: a. Accettare

Dettagli

Introduzione alla programmazione C di socket

Introduzione alla programmazione C di socket Introduzione alla programmazione C di socket (testo di riferimento : M. J. Donahoo, K. L. Calvert, TCP/IP Sockets in C: Practical Guide for Programmers. Morgan Kaufman Publishers. ) A.A. 2005/06 Una rete

Dettagli

L interfaccia socket

L interfaccia socket L interfaccia socket Application Programming Interface: API Socket API Procedure base Altre procedure Ordinamento dei byte Interazione client-server orientata alla connessione Interazione client-server

Dettagli

Laboratorio di Programmazione in Rete

Laboratorio di Programmazione in Rete Laboratorio di Programmazione in Rete a.a. 2005/2006 http://www.di.uniba.it/~lisi/courses/prog-rete/prog-rete0506.htm dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì ore 10-12

Dettagli

DATAGRAM SOCKET. Angelastro Sergio Diomede Antonio Viterbo Tommaso

DATAGRAM SOCKET. Angelastro Sergio Diomede Antonio Viterbo Tommaso DATAGRAM SOCKET Angelastro Sergio Diomede Antonio Viterbo Tommaso Definizione supporta i datagram privo di connessione messaggi inaffidabili di una lunghezza massima prefissata il protocollo UDP supporta

Dettagli

Internetworking with TCP/IP (Douglas E. Comer) Vol. I and Vol III.

Internetworking with TCP/IP (Douglas E. Comer) Vol. I and Vol III. Internetworking with TCP/IP (Douglas E. Comer) Vol. I and Vol III http://gapil.truelite.it/ http://www.linuxdidattica.org/docs/a ltre_scuole/planck/socket/ Client Server Esistono vari modelli di architettura

Dettagli

LABORATORIO di Reti di Calcolatori

LABORATORIO di Reti di Calcolatori LABORATORIO di Reti di Calcolatori Socket in linguaggio C: nozioni preliminari 1 of 16 v slide della docente Bibliografia v testo di supporto: D. Maggiorini, Introduzione alla programmazione client-server,

Dettagli

Una prima applicazione in C per l utilizzo delle socket

Una prima applicazione in C per l utilizzo delle socket Una prima applicazione in C per l utilizzo delle socket Richiamo sulle socket Socket in Windows (WinSock) Differenze tra sistemi operativi D. Gendarmi Socket API API: Application Programming Interface

Dettagli

Laboratorio di Programmazione in Rete

Laboratorio di Programmazione in Rete Laboratorio di rogrammazione in Rete a.a. 2005/2006 http://www.di.uniba.it/~lisi/courses/prog-rete/prog-rete0506.htm dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì ore 10-12

Dettagli

Esercitazione [6] Client/Server con Socket

Esercitazione [6] Client/Server con Socket Esercitazione [6] Client/Server con Socket Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di

Dettagli

Paradigma client-server

Paradigma client-server Interazione Client Server (socket) Vittorio Maniezzo Università di Bologna Vittorio Maniezzo Università di Bologna 15 CliSer - 1/31 Paradigma client-server Le applicazioni utente devono interagire con

Dettagli

Laboratorio di Sistemi Operativi 29-01-2009. Cognome Nome Mat.

Laboratorio di Sistemi Operativi 29-01-2009. Cognome Nome Mat. Il compito è costituito da domande chiuse, domande aperte ed esercizi. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio

Dettagli

INTERNET DOMAIN SOCKETS (Cap.59)

INTERNET DOMAIN SOCKETS (Cap.59) INTERNET DOMAIN SOCKETS (Cap.59) Internet Domain Stream Socket TCP Internet Domain Datagram Socket UDP A differenza degli UDDS I datagrams possono essere persi duplicati o arrivare in un ordine diverso

Dettagli

La programmazione di rete

La programmazione di rete La programmazione di rete Introduzione alla programmazione di rete La connessione La trasmissione 20 febbraio 2004 Applicazioni distribuite Applicazione: un insieme di programmi coordinati per svolgere

Dettagli

Socket Programming. Socket Programming. Università di Palermo

Socket Programming. Socket Programming. Università di Palermo Socket Programming Socket Programming 1 Architettura Processo (Messagi) HTTP, SMTP, DNS, IMAP,... Trasporto (Messagi) TCP UDP Rete (Pacchetti) ARP IP ICMP Data link (Frames) Ethernet, FDDI, 802.11,...

Dettagli

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server.

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento

Dettagli

LABORATORIO di Reti di Calcolatori

LABORATORIO di Reti di Calcolatori LABORATORIO di Reti di Calcolatori Socket in linguaggio C: protocollo connectionless 1 of 14 v slide della docente Bibliografia v testo di supporto: D. Maggiorini, Introduzione alla programmazione client-server,

Dettagli

COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX

COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX A cura del prof. Gino Tombolini 1 COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX Il sistema UNIX TCP/IP fornisce un meccanismo di comunicazione tra processi residenti su nodi distinti di una rete, compatibili

Dettagli

Socket TCP. prima parte

Socket TCP. prima parte Socket TCP prima parte Cosa cambia: socket int fd = socket(pf_inet, SOCK_STREAM, 0); if (fd

Dettagli

Esercitazione [08] Server multi-process/multi-thread

Esercitazione [08] Server multi-process/multi-thread Esercitazione [08] Server multi-process/multi-thread Leonardo Aniello aniello@dis.uniroma1.it Daniele Cono D'Elia delia@dis.uniroma1.it Giuseppe Laurenza laurenza@dis.uniroma1.it Federico Lombardi lombardi@dis.uniroma1.it

Dettagli

Reti di Calcolatori - Laboratorio. Lezione 5. Gennaro Oliva

Reti di Calcolatori - Laboratorio. Lezione 5. Gennaro Oliva Reti di Calcolatori - Laboratorio Lezione 5 Gennaro Oliva Server basato su I/O Multiplex Per realizzare un server è possibile utilizzare l'i/o Multiplex Un unico processo iterativo gestisce il socket che

Dettagli

Comunicazioni fra processi remoti: i socket nello UNIX di Berkeley

Comunicazioni fra processi remoti: i socket nello UNIX di Berkeley Comunicazioni fra processi remoti: i socket nello UNIX di Berkeley La base per l I/O di rete in UNIX BSD (unix di Berkeley) è un astrazione chiamata socket (letteralmente "presa"). Si può considerare il

Dettagli

IPC Inter Process Communication

IPC Inter Process Communication Il protocollo TCP controlla che la trasmissione tra due end points avvenga correttamente. Non stabilisce alcun criterio su chi deve iniziare la comunicazione. Questo compito è svolto dalle applicazioni

Dettagli

Programmazione socket. Queste slide sono distribuite con licenza Creative Commons Attribuzione-Non commerciale-condividi allo stesso modo 2.

Programmazione socket. Queste slide sono distribuite con licenza Creative Commons Attribuzione-Non commerciale-condividi allo stesso modo 2. Programmazione socket Queste slide sono distribuite con licenza Creative Commons Attribuzione-Non commerciale-condividi allo stesso modo 2.5 Italia Applicazioni di rete Realizzare un'applicazione di rete

Dettagli

Esercitazione [7] Server multi-process/multi-thread

Esercitazione [7] Server multi-process/multi-thread Esercitazione [7] Server multi-process/multi-thread Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi

Dettagli

Laboratorio reti AA 2008/2009. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione

Laboratorio reti AA 2008/2009. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione Laboratorio reti AA 2008/2009 Dott. Matteo Roffilli roffilli@csr.unibo.it Ricevimento in ufficio dopo la lezione 1 Laboratorio reti AA 2008/2009 Per esercitarvi fate SSH su: alfa.csr.unibo.it si-tux00.csr.unibo.it.

Dettagli

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server.

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento

Dettagli

Opzioni per le Socket

Opzioni per le Socket Opzioni per le Socket A.A. 2005/06 Opzioni per le Socket Ogni socket aperto ha delle proprietà che ne determinano alcuni comportamenti Le opzioni del socket consentono di modificare tali proprietà Ogni

Dettagli

Socket per TCP: Fondamenti

Socket per TCP: Fondamenti Socket per TCP: Fondamenti Network Applications Molte applicazioni di rete sono formate da due programmi distinti (che lavorano su due diversi host) uno detto server ed uno detto client. Il server si mette

Dettagli

Laboratorio reti AA 2007/2008. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione

Laboratorio reti AA 2007/2008. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione Laboratorio reti AA 2007/2008 Dott. Matteo Roffilli roffilli@csr.unibo.it Ricevimento in ufficio dopo la lezione 1 Laboratorio reti AA 2007/2008 Per esercitarvi fate SSH su: alfa.csr.unibo.it si-tux00.csr.unibo.it.

Dettagli

Sistemi di Elaborazione. Introduzione alla Programmazione distribuita

Sistemi di Elaborazione. Introduzione alla Programmazione distribuita Sistemi di Elaborazione Introduzione alla Programmazione distribuita Obiettivi Introdurre i concetti di base su programmazione distribuita Modello Client-Server Interfaccia Socket Progettare e realizzare

Dettagli

Esercitazione Laboratorio di Sistemi Operativi 20-01-2014. Cognome Nome Mat.

Esercitazione Laboratorio di Sistemi Operativi 20-01-2014. Cognome Nome Mat. Il compito è costituito da domande chiuse e domande aperte. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio di 1 punto

Dettagli

I Socket. Laboratorio Software 2008-2009 M. Grotto R. Farina

I Socket. Laboratorio Software 2008-2009 M. Grotto R. Farina M. Grotto R. Farina Sommario 1. Applicazioni Distribuite 2. I Socket Introduzione Interfacce e protocolli Descrizione Stile di comunicazione Namespace e protocollo Include e system call Creazione e chiusura

Dettagli

LABORATORIO di Reti di Calcolatori

LABORATORIO di Reti di Calcolatori LABORATORIO di Reti di Calcolatori Socket in linguaggio C: protocollo connection-oriented 1 of 15 v slide della docente Bibliografia v testo di supporto: D. Maggiorini, Introduzione alla programmazione

Dettagli

Le reti basate su TCP/IP

Le reti basate su TCP/IP internet Le reti basate su TCP/IP Una rete di reti è detta internet (con la i minuscola). Una internet è definita fornendo i protocolli per trasferire le informazioni tra le varie reti. Il TCP/IP serve

Dettagli

Lo strato di applicazione in Internet

Lo strato di applicazione in Internet Lo strato di applicazione in Internet Prof. Ing. Carla Raffaelli a.a. 2004/2005 Protocolli applicativi Sono i protocolli utilizzati dalle applicazioni per scambiarsi informazioni Esempi: HTTP per il web,

Dettagli

Una semplice applicazione client/server 1

Una semplice applicazione client/server 1 Una semplice applicazione client/server 1 Il nostro obiettivo In questa parte del corso implementeremo un applicazione client/server che usa i socket Internet disponibili nei sistemi Unix/Linux. Nello

Dettagli

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori a.a. 2009/10

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori a.a. 2009/10 Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori a.a. 2009/10 Roberto Canonico (roberto.canonico@unina.it) Antonio Pescapè (pescape@unina.it) Le socket di Berkeley Le socket di Berkeley

Dettagli

Le socket di Berkeley

Le socket di Berkeley Corso di Reti di Calcolatori I Simon Pietro Romano (spromano@unina.it) Antonio Pescapè (pescape@unina.it) Giorgio Ventre (giorgio@unina.it) Roberto Canonico (roberto.canonico@unina.it) Le socket di Berkeley

Dettagli

Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it

Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale

Dettagli

unsigned long inet_addr(cp) char *cp;

unsigned long inet_addr(cp) char *cp; /* bcopystru.c #include struct point int x; char *y; ; struct point a, b; struct pint *pta, *ptb; a.x = 5; a.y = pippo ; b = a; printf i valori del secondo point sono: %d %s\n,b.x,b.y); pta=

Dettagli

Laboratorio reti AA 2008/2009. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione

Laboratorio reti AA 2008/2009. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione Laboratorio reti AA 2008/2009 Dott. Matteo Roffilli roffilli@csr.unibo.it Ricevimento in ufficio dopo la lezione 1 Laboratorio reti AA 2008/2009 Per esercitarvi fate SSH su: alfa.csr.unibo.it si-tux00.csr.unibo.it.

Dettagli

IPC: InterProcess Communication

IPC: InterProcess Communication IPC: InterProcess Communication Uso di segnali Uso di file processo invia limitata quantità info (solo un tipo di segnale) e manca il mittente del segnale solo tra processi che condividono un file system

Dettagli

IPC: InterProcess Communication

IPC: InterProcess Communication IPC: InterProcess Communication Uso di segnali Uso di file processo invia limitata quantità info (solo un tipo di segnale) e manca il mittente del segnale solo tra processi che condividono un file system

Dettagli

Reti di Calcolatori - Laboratorio. Lezione 6. Gennaro Oliva

Reti di Calcolatori - Laboratorio. Lezione 6. Gennaro Oliva Reti di Calcolatori - Laboratorio Lezione 6 Gennaro Oliva Diverse forme di indirizzamento Type IPv6 TCP # IP interfaces identified # IP interfaces delivered to Unicast Anycast Multicast Broadcast opt.

Dettagli

Modello a scambio di messaggi

Modello a scambio di messaggi Modello a scambio di messaggi Aspetti caratterizzanti il modello Canali di comunicazione Primitive di comunicazione 1 Aspetti caratterizzanti il modello modello architetturale di macchina (virtuale) concorrente

Dettagli

Reti di calcolatori Tecnologie Web Prova in itinere 2 16 giugno 2010

Reti di calcolatori Tecnologie Web Prova in itinere 2 16 giugno 2010 Nome Cognome Matricola Reti di calcolatori Tecnologie Web Prova in itinere 2 16 giugno 2010 1. [punti rdc: 12 - taw: 15] Dato il seguente schema di rete Host 3 Host 4 Host 5 Host 6 Host 7 Host 2 143.9.0.0

Dettagli

Laboratorio di Programmazione in Rete

Laboratorio di Programmazione in Rete Laboratorio di Programmazione in Rete a.a. 2005/2006 http://www.di.uniba.it/~lisi/courses/prog-rete/prog-rete0506.htm dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì ore 10-12

Dettagli

Implementazione di un server. Server iterativo. Offro servizio ad un client alla volta. Dobbiamo scrivere un programma in C che offre un servizio

Implementazione di un server. Server iterativo. Offro servizio ad un client alla volta. Dobbiamo scrivere un programma in C che offre un servizio Implementazione di un server Server iterativo Offro servizio ad un client alla volta Dobbiamo scrivere un programma in C che offre un servizio Il sistema operativo tiene gli altri client in coda È la variante

Dettagli

I Socket di Berkeley

I Socket di Berkeley I Socket di Berkeley di Francesco Licandro Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università degli studi di Catania A.A. 2004-2005 1 Programmazione su rete Le applicazioni di

Dettagli

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009 Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017

Dettagli

Elementi di programmazione con interfaccia Socket

Elementi di programmazione con interfaccia Socket Struttura generale per stream sockets Socket() Well-Known Port Bind() Elementi di programmazione con interfaccia Socket Cenni di programmazione secondo la nuova interfaccia Socket definita nella RFC 2553

Dettagli

Il sistema operativo LINUX Inter Process Communication. Sommario. popen ( ) PIPE. pipe ( ) popen ( ) Sistemi operativi Modulo II

Il sistema operativo LINUX Inter Process Communication. Sommario. popen ( ) PIPE. pipe ( ) popen ( ) Sistemi operativi Modulo II Il sistema operativo LINUX Inter Process Communication Sommario Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica dup FIFO

Dettagli

Un server di posta (che usa il protocollo SMTP) è identificato dal numero di porta 25.

Un server di posta (che usa il protocollo SMTP) è identificato dal numero di porta 25. Il protocollo TCP controlla che la trasmissione tra due end points avvenga correttamente. Non stabilisce alcun criterio su chi deve iniziare la comunicazione. Questo compito è svolto dalle applicazioni

Dettagli

Lezione n.3 LIVELLO TRASPORTO

Lezione n.3 LIVELLO TRASPORTO Università degli Studi di Pisa Lezione n.3 SSIS INFORMATICA LIVELLO TRASPORTO 30/11/2007 Laura Ricci Laura Ricci 1 LIVELLO TRASPORTO realizza un supporto per la comunicazione logica tra processi distribuiti

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi primavera 2009 System V IPC code di messaggi System V IPC I tre tipi di IPC di System V sono: Code di Messaggi Semafori Memoria Condivisa Identificatori Ogni struttura IPC è individuata tramite un identificatore

Dettagli

Il linguaggio C. Istruzioni, funzioni, dati strutturati

Il linguaggio C. Istruzioni, funzioni, dati strutturati Il linguaggio C Istruzioni, funzioni, dati strutturati Istruzioni Servono a dirigere il flusso di esecuzione di un programma controllano l ordine di esecuzione delle espressioni, quindi dei loro side effects

Dettagli

API Socket di Berkeley

API Socket di Berkeley Laboratorio Reti di Calcolatori (A.A. 2008-2009) Programmazione di rete ed interfaccia API socket di Berkeley Delfina Malandrino delmal@dia.unisa.it http://www.dia.unisa.it/professori/delmal/ API Socket

Dettagli

Esempio 1: stampa locale di file remoto

Esempio 1: stampa locale di file remoto Alcuni esempi di uso di Socket Esempio 1: stampa locale di file remoto Visualizzazione locale del contenuto di un file remoto. Il client deve richiedere la creazione della connessione e successivamente

Dettagli

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

Progettazione di un client TCP. Progettazione di un server TCP. Esempio: daytime TCP. Client TCP daytime

Progettazione di un client TCP. Progettazione di un server TCP. Esempio: daytime TCP. Client TCP daytime Progettazione di un client TCP Progettazione di un server TCP Passi per la progettazione di un client TCP 1. Creazione di un endpoint Richiesta al sistema operativo 2. Creazione della connessione Implementazione

Dettagli

Guida all' uso dei sockets nella programmazione in C

Guida all' uso dei sockets nella programmazione in C Guida all' uso dei sockets nella programmazione in C ( pseudo-traduzione personalizzata di "Beej's Guide to Network Programming" ) (Prima parte) INTRODUZIONE Finalmente ho trovato una guida chiara e semplice

Dettagli

Applicazione distribuita

Applicazione distribuita La programmazione di applicazioni distribuite in C Il concetto di applicazione distribuita L architettura di una applicazione distribuita Il paradigma a scambio di messaggi Il paradigma client-server Il

Dettagli

File binari e file di testo

File binari e file di testo I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file

Dettagli

Capitolo 5 -- Stevens

Capitolo 5 -- Stevens Libreria standard di I/O Capitolo 5 -- Stevens Libreria standard di I/O rientra nello standard ANSI C perché è stata implementata su molti sistemi operativi oltre che su UNIX le sue funzioni individuano

Dettagli

Programmazione di applicazioni di rete

Programmazione di applicazioni di rete Programmazione di applicazioni di rete Valeria Cardellini Università di Roma Tor Vergata Applicazioni di rete Applicazioni di rete - forniscono i servizi di alto livello utilizzati dagli utenti - determinano

Dettagli

Program m azione di Sistem a 6

Program m azione di Sistem a 6 Program m azione di Sistem a 6 Lucidi per il corso di Laboratorio di Sistemi Operativi tenuto da Paolo Baldan presso l'università Ca' Foscari di Venezia, anno accademico 2004/ 2005. Parte di questo materiale

Dettagli

Laboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017. Ing. Niccolò Iardella

Laboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017. Ing. Niccolò Iardella Laboratorio di Reti Informatiche Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017 Ing. Niccolò Iardella niccolo.iardella@unifi.it 1 Esercitazione 5 Programmazione con i socket Parte 2

Dettagli

Reti a commutazione di pacchetti I dati vengono divisi in pacchetti I pacchetti vengono spediti singolarmente sulla rete

Reti a commutazione di pacchetti I dati vengono divisi in pacchetti I pacchetti vengono spediti singolarmente sulla rete Autunno 2002 Prof. Roberto De Prisco -04: Datagram IP Università degli studi di Salerno Laurea e Diploma in Informatica Datagram 04.2 Reti a commutazione di pacchetti I dati vengono divisi in pacchetti

Dettagli

Livello di trasporto:

Livello di trasporto: Livello di : Gaia Maselli maselli@di.uniroma1.it Queste slide sono un adattamento delle slide fornite dal libro di testo e pertanto protette da copyright. All material copyright 1996-2007 J.F Kurose and

Dettagli

Variabili e Funzioni. Informatica 1 / 19

Variabili e Funzioni. Informatica 1 / 19 Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:

Dettagli

Gestione dinamica della memoria

Gestione dinamica della memoria Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.

Dettagli

Esercizi su UDP. Esercitazione di Laboratorio di Programmazione di Rete A. Daniele Sgandurra 22/10/2008. Università di Pisa

Esercizi su UDP. Esercitazione di Laboratorio di Programmazione di Rete A. Daniele Sgandurra 22/10/2008. Università di Pisa Esercizi su UDP Esercitazione di Laboratorio di Programmazione di Rete A Daniele Sgandurra Università di Pisa 22/10/2008 Un Tipico Client UDP Un client UDP invia datagrammi ad un server in attesa di essere

Dettagli

SERVER CLIENT. Struttura di un Applicazione UDP. Socket UDP. Parametri di sendto. Funzioni di Input/Output. Prof. Vincenzo Auletta

SERVER CLIENT. Struttura di un Applicazione UDP. Socket UDP. Parametri di sendto. Funzioni di Input/Output. Prof. Vincenzo Auletta I semestre 03/04 Struttura di un Applicazione UDP Socket UDP socket() bind() Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ CLIENT socket() sendto() Dati (richiesta)

Dettagli

UDP. User Datagram Protocol. UDP Connectionless

UDP. User Datagram Protocol. UDP Connectionless UDP User Datagram Protocol IP fornisce un unreliable datagram service tra gli host I Transport protocols forniscono un servizio di consegna end-to-end tra gli endpoints di una connessione UDP Connectionless

Dettagli

Socket per TCP: Fondamenti

Socket per TCP: Fondamenti Socket per TCP: Fondamenti Network Applications Molte applicazioni di rete sono formate da due programmi distinti (che lavorano su due diversi host) uno detto server ed uno detto client. Il server si mette

Dettagli