Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/ Comunicazione Tra Processi (IPC) Parte -

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012. - Comunicazione Tra Processi (IPC) - - 2 Parte -"

Transcript

1 Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/ Comunicazione Tra Processi (IPC) Parte - 1

2 Sommario Comunicazione tra processi su macchine diverse in rete: Socket TCP o Socket Stream Esercizi: Socket TCP Client/Server Interattivo Client/Server Interattivo trasferire file con socket Gestire più client: Client/Server Concorrente multi-processo Client/Server Concorrente multi-thread 2

3 - Socket TCP o Socket Stream - 3

4 - Socket TCP: Generalità Canale di comunicazione bidirezionale tra processi attivi su nodi diversi della stessa rete. Creata all interno del dominio internet in cui viene utilizzato protocollo TCP per lo scambio di dati tra i vari nodi. il NODO: INDIRIZZO IP PROCESSO A NODO: INDIRIZZO IP PROCESSO B socket porta Internet (TCP/IP) porta socket 4

5 - Socket TCP: Dominio & Indirizzi Il dominio all interno del quale viene creata la socket TCP si chiama dominio internet e lo si rappresenta: con il protocollo family PF_INET oppure addres family AF_INET (dominio internet) In questo dominio, ogni nodo è identificato da: numero di porta ( 2 byte = intero a 16 bit da 0 a ) indirizzo IP (4 byte = intero a 32 bit es ) che rappresentano il formato degli indirizzi internet. Quindi, si deve utilizzare una struttura con cui rappresentare tipi di indirizzo. questo 5

6 - Socket TCP: Formato degli Indirizzi Ipv4 #include <netinet/ip.h> struct sockaddr_in { short sa_family; /* Famiglia di indirizzi AF_INET */ short sin_port; /* Numero di porta 2 byte*/ struct in_addr sin_addr; /* indir. IP 4 byte*/ char sin_zero[8]; /* riempimento non usato */ }; dovein_addr rappresenta un indirizzo IP struct in_addr { u_long s_addr; /* 4 byte */ }; 6

7 - Socket TCP: Struttura Indirizzi Ipv4 Il membro sin_family deve essere sempre impostato (2 byte) sin port specifica il numero di porta (2 byte) Il membro sin_addr contiene l indirizzo internet del destinatario comunicazione. (4 byte) della sin_zero (8 byte) serve a far si che la grandezza della struttura sia almeno 16 byte. (riempimento) 7

8 - Socket TCP: Struttura Indirizzi Ipv4 Nel protocollo TCP/IP, gli interi cioè gli indirizzi e i numeri di porta sono trasmessi in network byte order ossia: byte ordinati in formato big endian (prima il byte più significativo) Sono necessarie apposite funzioni di conversione per mantenere la portabilità del codice. Infatti, i processori memorizzano interi in memoria sia in formato big endian (Motorola) che little endian (Pentium) (prima byte meno significativo) Funzioni di conversione tra interi a 16 e 32 senza segno unsigned: #include <netinet/in.h> 1. uint32_t htonl(uint32_t x) (big endian) 2. uint16_t htons(uint16_t x) Returns: Valore in network byte order 1. uint32_t ntohl(uint32_t x) 2. uint16_t ntohs(uint16_t x) Returns: Valore in host byte order 8

9 - Socket TCP: Conversione indirizzi IP Funzione inet_aton (ascii to network): Ipv4 #include <netinet/in.h> struct sockaddr_in indirizzo; if (inet_aton( , &indirizzo.sin_addr) == 0) perror( inet_aton ), exit(1); converte l indirizzo IP (usando la notazione puntata) in un unsigned long mette nel campo sin_addr della struttura degli indirizzi Restituisce: zero in caso di errore l indirizzo in Network byte Order altrimenti e lo 9

10 - Socket TCP: Conversione indirizzi IP Funzione inet_ntop: Ipv6 #include <netinet/in.h> char buff[maxline]; struct sockaddr_in cliaddr; if(inet_ntop(af_inet,&cliaddr.sin_addr,buff,sizeof(buff))== 0) perror( inet_ntop ), exit(1); Converte l indirizzo dalla relativa struttura in una stringa simbolica Restituisce: NULL in caso di errore un puntatore non nullo alla stringa convertita in caso si successo 10

11 - Socket TCP: Impostare indirizzi 11

12 - Socket TCP: Funzione bind (lato server) Permette di assegnare uno specifico indirizzo al socket: struct sockaddr_in mio_indirizzo; mio_indirizzo.sin_family = AF_INET; mio_indirizzo.sin_port = htons(5200); mio_indirizzo.sin_addr.s_addr = htonl(inaddr_any); bind(fd, (struct sockaddr *) &mio_indirizzo, sizeof(mio_indirizzo)); Il server chiama bind per stabilire su quale indirizzo mettersi in ascolto Solitamente si scegli solo il numero di porta Come indirizzo IP, sceglie INADDR_ANY, cosi' accetta connessioni dirette a qualunque indirizzo 12

13 - Socket TCP: Funzione connect (lato client) Permette ad un client di aprire una connessione con il server: Il client deve conoscere l'indirizzo IP e la porta del processo server struct sockaddr_in indirizzo; indirizzo.sin_family = AF_INET; indirizzo.sin_port = htons(5200); inet_aton( , &indirizzo.sin_addr); Accetta connessioni solo dall indirizzo ip specificato connect(fd, (struct sockaddr *) &indirizzo, sizeof(indirizzo)); La funzione termina solo dopo che la connessione è stata creata Restituisce: 0 se ok -1 in caso di errore 13

14 - Socket TCP: Funzione gethostbyname (lato client) Ottenere un indirizzo IP a partire dal nome di un host #include <sys/socket.h> #include <netdb.h> struct hostent *gethostbyname(const char *name); Restituisce: un puntatore a struttura di tipo hostent che tra le tante informazioni contiene anche l indirizzo IP NULL in caso di errore 14

15 - Socket TCP: Struttura di un server Esempio: int fd1, fd2; struct sockaddr_in mio_indirizzo; mio_indirizzo.sin_family = AF_INET; mio_indirizzo.sin_port = htons(5200); mio_indirizzo.sin_addr.s_addr = htonl(inaddr_any); fd1 = socket(pf_inet, SOCK_STREAM, 0); Accetta connessioni dirette qualunque indirizzo a bind(fd1, (struct sockaddr *) &mio_indirizzo, sizeof(mio_indirizzo)); listen(fd1, 5); fd2 = accept(fd1, NULL, NULL);... close(fd2); close(fd1); 15

16 - Socket TCP: Struttura di un client Esempio: int fd, portno; struct sockaddr_in serv_addr; struct hostent *server; server = gethostbyname(argv[1]); portno = atoi(argv[2]); fd = socket(pf_inet, SOCK_STREAM, 0); serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(portno); memcpy((char *)&serv_addr.sin_addr,(char *)server->h_addr, server->h_length); connect(fd,(struct sockaddr *) & serv_addr, sizeof(serv_addr));... close(fd); 16

17 Vengono scambiati tra client e server tre segmenti prima di instaurare una connessione (SYN1/SYN2-ACK1/ACK2) 17

18 - Esercizio: client/server con socket TCP e server interattivo - 18

19 Esercizio n 1 Socket TCP Realizzare uno scambio di messaggi tra client e server mediante socket TCP. Il client invia un messaggio al server, il quale dopo aver ricevuto il messaggio comunica al client l avvenuta ricezione. Utilizzo, lanciare i due programmi in due shell separate della stessa macchina o di macchine diverse Esecuzione sulla stessa macchina $./server.out <numero_porta> $./client.out localhost <numero_porta> Utilizzare come <numero_porta> il numero di matricola Esecuzione sul macchine diverse $./server.out <numero_porta> $./client.out IP macchina server <numero_porta> Output: (CLIENT) Scrivere un messaggio: ciao (SERVER) Ecco il messaggio ricevuto dal client: ciao (CLIENT) Ecco il messaggio ricevuto dal server: MESSAGGIO RICEVUTO, FINE COMUNICAZIONE N.B. localhost è il nome della macchina su cui è lanciato il processo server 19

20 Sol. Eser. n 1 server.c #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <string.h> void error(char *msg) { perror(msg); exit(1);} int main(int argc, char *argv[]) { int sockfd, newsockfd, portno; char buffer[256]=""; struct sockaddr_in serv_addr; int n; char *messaggio_ricevuto="messaggio RICEVUTO, FINE COMUNICAZIONE"; if (argc < 2) { fprintf(stderr,"errore, nessuna porta specificata\n"); exit(1); } 20

21 Sol. Eser. n 1 server.c sockfd = socket(af_inet, SOCK_STREAM, 0); if (sockfd < 0) error("errore DI APERTURA DELLA SOCKET"); portno = atoi(argv[1]); Accetta connessioni dirette qualunque indirizzo serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons(portno); //return network byte order a if (bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) error("errore DI BINDING"); listen(sockfd,5); 21

22 Sol. Eser. n 1 server.c while((newsockfd = accept(sockfd, NULL, NULL)) > -1) { if (newsockfd < 0) error("errore DI ACCEPT"); n = read(newsockfd, buffer, 255); if (n < 0) error("errore in lettura dalla socket"); printf("(server) Messaggio ricevuto dal client: %s\n",buffer); n = write(newsockfd,messaggio_ricevuto,strlen(messaggio_ricevuto)+1); if (n < 0) error("errore in scrittura sulla socket"); close(sockfd); }//end while close(newsockfd); return 0; } //end server 22

23 Sol. Eser. n 1 client.c #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <string.h> void error(char *msg) {perror(msg); exit(0);} int main(int argc, char *argv[]) {int sockfd, portno, n; struct sockaddr_in serv_addr; struct hostent *server; char send_buffer[256]; char rec_buffer[256]=""; if (argc < 3) { fprintf(stderr,"uso %s nomehost porta\n", argv[0]); exit(0);} 23

24 portno = atoi(argv[2]); Sol. Eser. n 1 client.c sockfd = socket(af_inet, SOCK_STREAM, 0); if (sockfd < 0) error("errore in apertura"); server = gethostbyname(argv[1]); if (server == NULL) { fprintf(stderr,"errore, l host non esiste\n"); exit(0); } serv_addr.sin_family = AF_INET; memcpy((char *)&serv_addr.sin_addr,(char *)server->h_addr, server->h_length); serv_addr.sin_port = htons(portno); if (connect(sockfd,(struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) error("errore di connessione"); 24

25 Sol. Eser. n 1 client.c printf("(client) Scrivere un messaggio: "); fgets(send_buffer,255,stdin);/*legge una linea dallo standard output*/ n = write(sockfd,send_buffer,strlen(send_buffer)); if (n < 0) error("errore in scrittura sulla socket"); n = read(sockfd,rec_buffer,255); if (n < 0) error("errore in lettura sulla socket"); printf("(client) Mess ricevuto dal server: %s\n",rec_buffer); close(sockfd); return 0; }//end client 25

26 - Esercizio: client/server con socket TCP Server concorrente multi processo - 26

27 Esercizio n 2 Socket TCP Scrivere due programmi C, server.c e client.c. che comunicano tramite socket TCP. Il server.c crea una socket TCP, ed ogni volta che instaura una connessione con un client, mediate fork crea un nuovo processo (server concorrente) e stampa a video l indirizzo IP del client che ha effettuato la connessione. Tale processo, dovrà leggere sul socket il messaggio scritto dal client stampandolo a video (lanciare l esecuzione dei due programmi su due shell distinti della stessa macchina o di macchine diverse) Esecuzione di processi sulla stessa macchina $ (shell1)./server.out <numero_porta> $ (shell2)./client.out localhost <numero_porta> Esecuzione di processi su macchine diverse $ (shell1)./server.out <numero_porta> $ (shell2)./client.out IP macchina server <numero_porta> Si utilizzi fgets per il messaggio da riga di comando 27

28 Sol. Eser. n 2 server.c #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> #include <netdb.h> #include <stdlib.h> main(int argc, char *argv[]) {int s, ns, pid,portno; struct sockaddr_in sin, client; char buf[80], char buffer[80]; if ((s = socket(af_inet, SOCK_STREAM, 0)) == -1) {perror("errore: socket"); exit(1); } portno = atoi(argv[1]); sin.sin_family = AF_INET; sin.sin_port = htons(portno); sin.sin_addr.s_addr = htonl(inaddr_any); if (bind(s, (struct sockaddr *) &sin, sizeof(sin)) == -1) { perror("errore: bind"); exit(1); } if (listen(s, 5) == -1) { perror("errore: listen"); exit(1); } 28

29 len=sizeof(client); while(1) //loop infinito {if ((ns = accept(s,(struct sockaddr *)&client,&len)) == -1) { perror("errore: accept"); exit(1); } if ((pid = fork()) == -1) { Sol. Esercizio N 2 server perror("errore: fork"); exit(1); } if (pid == 0) { while(1) { if ((pid = read(ns, buf, sizeof(buf))) == -1) { perror("tomd: read"); exit(1); } if (pid < sizeof(buf)) break; printf("messaggio da client: %s", buf); } close(ns);//il figlio termina exit(0); } //end if inet_ntop(af_inet, &client.sin_addr, buffer, sizeof(buffer)); printf("request from host %s\n", buffer); close(ns); }//end loop}//end server 29

30 Sol. Eser. n 2 client.c #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <string.h> main(int argc,char *argv[]){ int s,portno; struct sockaddr_in sin; struct hostent *hp; char buf[80]; if (argc!= 3) { printf("illegal number of arguments"); exit(1); } if ((hp = gethostbyname(argv[1])) == 0) { perror("tom: gethostbyname"); exit(1); } 30

31 Sol. Eser. n 2 client.c portno = atoi(argv[2]); sin.sin_family = AF_INET; memcpy((char *)&sin.sin_addr,(char *)hp->h_addr,hp->h_length); sin.sin_port = htons(portno); if ((s = socket(af_inet, SOCK_STREAM, 0)) == -1) { perror( errore: socket"); exit(1); } if (connect(s, (struct sockaddr *) &sin, sizeof(sin)) == -1) { perror( errore: connect"); exit(1);} printf("(client) Scrivere un messaggio: "); fgets(buf,255,stdin); if (write(s, buf, sizeof(buf)) == -1) { perror( errore: write"); exit(1); } close(s); } 31

32 - Esercizio: client/server con socket TCP Server concorrente multi-thread per gestire più client- 32

33 Esercizio n 3 Socket TCP Scrivere due programmi C, servermultithread.c e client.c. Il programma servermultithread.c, crea una socket TCP e rimane in attesa di ricevere una connessione. Quando riceve una connessione, crea un thread con chiamata ad una funzione che gestisce la connessione, mentre il programma server rimane in ascolto per eventuali altre richieste di connessione. Il programma client, si connette alla socket TCP ed invia il messaggio passato da tastiera (usare fgets) al server. Il server dopo aver stampato l indirizzo IP del client connesso tramite il thread legge il messaggio e lo stampa a video (Lanciare i due programmi in due shell distinte della stessa macchina o di macchine diverse, e compilare il server con -lpthread) Esecuzione server: $./servermultithread.out <numporta> Esecuzione client: $./client.out localhost e/o IP macchina server <numporta> 33

34 - Comunicazione client/server con socket TCP - Schema Server concorrente multi-thread per gestire più client server Socket TCP client 1 pthread_create() processo thread legge il messaggio del client dalla socket gestisci Il processo thread gestisce la connessione con i client stampa il messaggio del client a video 34

35 - Comunicazione client/server con socket TCP - Schema Server concorrente multi-thread per gestire più client server client Thread_1 Connesso a Connesso a Thread_2 client

36 #include <errno.h> #include <sys/types.h> #include <sys/socket.h> #include <pthread.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #define N 256 Sol. Eser. n 3 server.c void *gestisci(void *arg) { printf("gestisci(): creato il thread\n"); char buf[n]; while (read((int *) arg, buf, N)!= 0) { printf("server %s\n", buf); } close((int *) arg); pthread_exit (0); } 36

37 Sol. Eser. n 3 server.c int main(int argc, char *argv[]) { int s_fd, c_fd, portno, len; pthread_t tid; char buffer[n]; struct sockaddr_in sin, client; s_fd = socket(af_inet, SOCK_STREAM, 0); portno = atoi(argv[1]); sin.sin_family = AF_INET; sin.sin_port = htons(portno); sin.sin_addr.s_addr = htonl(inaddr_any); len = sizeof(client); bind(s_fd, (struct sockaddr *) &sin, sizeof(sin)); isten(s_fd, 5); 37

38 Sol. Eser. n 3 server.c while (1) { c_fd = accept(s_fd, (struct sockaddr *)&client, &len); inet_ntop(af_inet, &client.sin_addr, buffer, sizeof(buffer)); printf("request from client %s\n", buffer); } pthread_create(&tid, NULL, gestisci, (void *) c_fd); pthread_detach(tid);//serve per liberare risorse close(s_fd); return 0; }//end server 38

39 Sol. Eser. n 3 client.c #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #define N 256 int main(int argc, char *argv[]) { int c_fd,portno; struct sockaddr_in sin; struct hostent *hp; char buffer[n]; if (argc!= 3) { printf("illegal number of arguments"); exit(1); } if ((hp = gethostbyname(argv[1])) == 0) { perror("tom: gethostbyname"); exit(1); } 39

40 Sol. Eser. n 3 client.c c_fd = socket(af_inet, SOCK_STREAM, 0); portno = atoi(argv[2]); sin.sin_family = AF_INET; memcpy((char *)&sin.sin_addr,(char *)hp->h_addr,hp->h_length); sin.sin_port = htons(portno); if(connect(c_fd, (struct sockaddr *) &sin, sizeof(sin)) < 0) {printf("connect() failed\n"); return 1; } printf("(client) Scrivere un messaggio: "); fgets(buffer,n,stdin); write(c_fd, buffer, strlen(buffer)); printf("client %d ha inviato il messaggio\n", getpid()); close(c_fd); return 0; }//end client 40

41 - Esercizio: client/server con socket TCP server interattivo per copia file - 41

42 Esercizio n 4 Socket TCP Si realizzino una coppia di programmi client/server che, utilizzando i socket TCP come mezzo di trasmissione, copiano file da un processo all'altro. Il processo client, scrive il contenuto del file da trasferire sulla socket, il processo server legge dalla socket e scrive sul nuovo file. Esecuzione: $./server <nome_porta> <nome_nuovo_file> $./client <nome_file_da_trasferire> localhost <nome_porta> Utilizzare come <nome_porta> il numero di matricola. 42

43 - Passi da compiere - Lato Server Lato Client socket socket bind connect listen open file da trasferire accept read file da trasferire open file write su socket read da socket write su file

44 Sol. Eser. n 4 server.c #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <string.h> #include <fcntl.h> #define MAXBUF 8192 int main(int argc, char * argv[]) { int server_socket,connect_socket,portno; int client_addr_len; int retcode,fd; struct sockaddr_in server_addr; char line[maxbuf]; if(argc < 3) { printf("usage:\n%s port nomefilelocale\n",argv[0]); return(0); } 44

45 Sol. Eser. n 4 server.c printf("server: fase di inizializzazione\n"); server_socket = socket(af_inet,sock_stream,0); if(server_socket == -1) { perror("aprendo il socket del server: "); return(-1); } portno = atoi(argv[1]); server_addr.sin_family = AF_INET; Accetta connessioni dirette a qualunque indirizzo server_addr.sin_addr.s_addr = INADDR_ANY; server_addr.sin_port = htons(portno); retcode = bind(server_socket,(struct sockaddr*)&server_addr, sizeof(server_addr)); if(retcode == -1) { perror("bind error"); return(-1); } 45

46 Sol. Eser. n 4 server.c listen(server_socket,1); printf("server: attendo connessione\n"); connect_socket = accept(server_socket,null,null); printf("server: accettata nuova connessione\n Apro file locale %s",argv[2]); fd = open(argv[2],o_wronly O_CREAT, S_IRUSR S_IWUSR); if(fd == -1) {perror("aprendo il file locale"); return(-2);} do {//ciclo di lettura da socket retcode = read(connect_socket,line,maxbuf); if(retcode!= -1) write(fd,line,retcode); //scrittura su file } while(retcode > 0); close(fd);//chiusura file printf("\n Fine del messaggio, chiusura della connessione\n"); close(connect_socket);//chiude la connessione printf("chiusura dei lavori... \n"); close(server_socket);//chiusura socket return(0); }//end server 46

47 Sol. Eser. n 3 client.c #include <stdio.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <fcntl.h> #define MAXBUF 8192 int main(int argc, char * argv[]) { int client_socket,fd,portno; int retcode,letti; struct sockaddr_in server_addr; char message[maxbuf]; char *nomehost,*filename; if(argc < 4) { printf("usage:\n%s nomefile nomehost portno\n",argv[0]); return(0); } 47

48 filename = argv[1]; Sol. Esercizio N 4 client nomehost = argv[2]; printf("client (%d): fase di inizializzazione\n",getpid()); client_socket = socket(af_inet,sock_stream,0); if(client_socket == -1) {perror("aprendo il socket del cliente"); return(-1);} portno = atoi(argv[3]); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(portno); memcpy(&server_addr.sin_addr,(gethostbyname(nomehost)->h_addr), sizeof(server_addr.sin_addr)); retcode = connect(client_socket, (struct sockaddr *)&server_addr,sizeof(server_addr)); if(retcode == -1) {perror("connettendo il socket"); return(-1);} fd = open(filename,o_rdonly);//apertura file da trasferire if(fd == -1){ perror("aprendo il file"); return(-1);} 48

49 Sol. Eser. n 4 client.c do {//ciclo di lettura da file letti = read(fd,message,maxbuf); if(letti > 0) { /* solo se la lettura ha avuto buon fine */ //scrittura su socket retcode = write(client_socket,message,letti); if(retcode == -1) { perror("scrivendo il messaggio"); return(-1);} } } while (letti > 0); printf("client: ho inviato dati dal file %s\n",filename); close(fd); //chiusura file close(client_socket); //chiusura return(0); }//end client 49

50 - Fine Esercitazione - 50

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

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

Chiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI mumolo@units.it

Chiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI mumolo@units.it Chiamate di sistema per la Inter Process Communication (IPC) in POSIX E.Mumolo, DEEI mumolo@units.it Pipe Cos'è un pipe? E' un canale di comunicazione che unisce due processi Caratteristiche: La più vecchia

Dettagli

Introduzione ai Device Drivers in Linux. E.Mumolo, DEEI mumolo@units.it

Introduzione ai Device Drivers in Linux. E.Mumolo, DEEI mumolo@units.it Introduzione ai Device Drivers in Linux E.Mumolo, DEEI mumolo@units.it 1 Device Drivers Moduli software che gestiscono le periferiche attraverso il file system Tutte le periferiche sono viste come file

Dettagli

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+...

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+... Setup delle ConnessioniTCP Una connessione TCP viene instaurata con le seguenti fasi, che formano il Three-Way Handshake (perchè formato da almeno 3 pacchetti trasmessi): 1) il server si predispone ad

Dettagli

CREAZIONE DI UN FILE

CREAZIONE DI UN FILE #include #include CREAZIONE DI UN FILE fd = creat(filename, mode); int fd, mode; char *filename; La primitiva creat crea un file, se non ne esiste uno col nome specificato, oppure

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi II Semestre - Marzo/Giugno 2008 Matricole congr. 0 mod 3 File & Directory #include #include stat,fstat e lstat int stat (const char *pathname, struct stat *buf); int fstat (int

Dettagli

Programmazione di rete in Java

Programmazione di rete in Java Programmazione di rete in Java Reti di calcolatori Una rete di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Lo

Dettagli

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione

Dettagli

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client Versione 25.4.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un

Dettagli

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

Dettagli

Fondamenti di Informatica T. Linguaggio C: File

Fondamenti di Informatica T. Linguaggio C: File Linguaggio C: File I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale.

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

Sistemi a più processori

Sistemi a più processori Università di Udine Facoltà di Scienze MM.FF.NN. A.A. 2007-2008 Copyright c 2000 04 Marino Miculan (miculan@dimi.uniud.it) La copia letterale e la distribuzione di questa presentazione nella sua integrità

Dettagli

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

Dettagli

Il modello client/server consente a due processi di condividere risorse e di cooperare per il raggiungimento di un obiettivo.

Il modello client/server consente a due processi di condividere risorse e di cooperare per il raggiungimento di un obiettivo. In una rete di ampie dimensioni, ciascuna sottorete (es. LAN, WAN) è connessa ad altre sottoreti tramite router. Internet è un insieme di reti connesse tra loro. Essenzialmente, in una rete alcune macchine

Dettagli

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247 Cos è una stringa (1) Stringhe DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247 Una stringa è una serie di caratteri trattati come una singola unità. Essa potrà includere lettere, cifre, simboli e caratteri

Dettagli

12.5 UDP (User Datagram Protocol)

12.5 UDP (User Datagram Protocol) CAPITOLO 12. SUITE DI PROTOCOLLI TCP/IP 88 12.5 UDP (User Datagram Protocol) L UDP (User Datagram Protocol) é uno dei due protocolli del livello di trasporto. Come l IP, é un protocollo inaffidabile, che

Dettagli

Le system call: fork(), wait(), exit()

Le system call: fork(), wait(), exit() Le system call: fork(), wait(), exit() Di seguito viene mostrato un programma che fa uso di puntatori a funzione, nel quale si mette in evidenza il loro utilizzo. Programma A1 #include int add(a,b,c)

Dettagli

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero ---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero delle variabili a cui possono essere assegnati gli indirizzi

Dettagli

IL LINGUAGGIO C++ Configurazione di Dev-C++

IL LINGUAGGIO C++ Configurazione di Dev-C++ IL LINGUAGGIO C++ Note sull'uso di DevC++ Requisiti di sistema per Dev-C++ - Sistema operativo Microsoft Windows 95, 98, Millenium Edition, NT 4, 2000 o XP - RAM: 8 Mb (consigliati almeno 32 Mb) - CPU:

Dettagli

Informatica per la comunicazione" - lezione 9 -

Informatica per la comunicazione - lezione 9 - Informatica per la comunicazione" - lezione 9 - Protocolli di livello intermedio:" TCP/IP" IP: Internet Protocol" E il protocollo che viene seguito per trasmettere un pacchetto da un host a un altro, in

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Linguaggio C: introduzione Il linguaggio C è un linguaggio general purpose sviluppato nel 1972 da Dennis Ritchie per scrivere il sistema operativo UNIX ed alcune applicazioni per un PDP-11. Il linguaggio

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Le Reti di Calcolatori (parte 2) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

File e Directory. M. Guarracino - File e Directory 1

File e Directory. M. Guarracino - File e Directory 1 File e Directory M. Guarracino - File e Directory 1 File e Directory Abbiamo visto come si possono utilizzare funzioni di I/O per i file: open, read, write, lseek e close Vogliamo ora analizzare ulteriori

Dettagli

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009 Lab 02 Tipi semplici in C Obiettivo dell esercitazione Acquistare familiarità con i tipi di dato semplici supportati

Dettagli

Inter-Process Communication

Inter-Process Communication Inter-Process Communication C. Baroglio a.a. 2002-2003 1 Introduzione In Unix i processi possono essere sincronizzati utilizzando strutture dati speciali, appartenti al pacchetto IPC (inter-process communication).

Dettagli

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30 Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30 NB: alcune domande hanno risposta multipla: si richiede di identificare TUTTE le risposte corrette.

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

Cos è un protocollo? Ciao. Ciao 2:00. tempo. Un protocollo umano e un protocollo di reti di computer:

Cos è un protocollo? Ciao. Ciao 2:00. <file> tempo. Un protocollo umano e un protocollo di reti di computer: Cos è un protocollo? Un protocollo umano e un protocollo di reti di computer: Ciao Ciao Hai l ora? 2:00 tempo TCP connection request TCP connection reply. Get http://www.di.unito.it/index.htm Domanda:

Dettagli

La protezione dai memory error exploit

La protezione dai memory error exploit Università degli Studi di Milano Sommario Introduzione 1 Stack Guard Terminator Canaries Random Canaries 2 3 Buffer Overflow Stack Guard Introduzione Buffer Overflow Condizione anomala. Memorizzazione

Dettagli

R.Focardi Laboratorio di Ingegneria del Software 6. 1

R.Focardi Laboratorio di Ingegneria del Software 6. 1 Networking Java permette comunicazioni in rete basate sul concetto di socket, che permette di vedere la comunicazione in termini di flusso (stream), in modo analogo all input-output di file, usando Stream

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 10 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Nomenclatura: 1 La rappresentazione di uno schema richiede una serie di abbreviazioni per i vari componenti. Seguiremo

Dettagli

Inizializzazione degli Host. BOOTP e DHCP

Inizializzazione degli Host. BOOTP e DHCP BOOTP e DHCP a.a. 2002/03 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Inizializzazione degli Host Un

Dettagli

MODBUS-RTU per. Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie. Expert NANO 2ZN

MODBUS-RTU per. Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie. Expert NANO 2ZN per Expert NANO 2ZN Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie Expert NANO 2ZN Nome documento: MODBUS-RTU_NANO_2ZN_01-12_ITA Software installato: NANO_2ZN.hex

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

Interazione, sincronizzazione e comunicazione tra processi

Interazione, sincronizzazione e comunicazione tra processi Interazione, sincronizzazione e comunicazione tra processi Classificazione Processi interagenti processi interagenti/indipendenti due processi sono indipendenti se l esecuzione di ognuno non è in alcun

Dettagli

I name server DNS. DNS: Domain Name System. Esempio di DNS. DNS: Root name server. DNS: queries ripetute

I name server DNS. DNS: Domain Name System. Esempio di DNS. DNS: Root name server. DNS: queries ripetute DNS: Domain Name System I name DNS Persone: identificatori: CF, nome, Numero di Passaporto Host e router Internet: Indirizzo IP ( bit) - usato per instradare i pacchetti nome, per es., massimotto.diiie.unisa.it

Dettagli

Lezione 9: Strutture e allocazione dinamica della memoria

Lezione 9: Strutture e allocazione dinamica della memoria Lezione 9: Strutture e allocazione dinamica della memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 9 Maggio 2012 Allocazione dinamica della memoria Memoria dinamica È possibile creare

Dettagli

Verifica che una grammatica sia Context Free nel GrammaReader

Verifica che una grammatica sia Context Free nel GrammaReader Verifica che una grammatica sia Context Free nel GrammaReader Sommario Dispensa di Linguaggi di Programmazione Corrado Mencar Pasquale Lops In questa dispensa si descrivono alcune soluzioni per verificare

Dettagli

Test di comunicazione tra due LOGO! 0BA7: Master - Master

Test di comunicazione tra due LOGO! 0BA7: Master - Master Industry Test di comunicazione tra due LOGO! 0BA7: Master - Master Dispositivi utilizzati: - 2 LOGO! 0BA7 (6ED1 052-1MD00-0AB7) - Scalance X-208 LOGO! 0BA7 Client IP: 192.168.0.1 LOGO! 0BA7 Server IP:

Dettagli

corso di Sistemi Distribuiti 4. IPC (Inter Process Communication) (parte 1): le forme ed i modelli della comunicazione tra processi

corso di Sistemi Distribuiti 4. IPC (Inter Process Communication) (parte 1): le forme ed i modelli della comunicazione tra processi CdL MAGISTRALE in INFORMATICA A.A. 2014-2015 corso di Sistemi Distribuiti 4. IPC (Inter Process Communication) (parte 1): le forme ed i modelli della comunicazione tra processi Prof. S.Pizzutilo Elementi

Dettagli

HORIZON SQL CONFIGURAZIONE DI RETE

HORIZON SQL CONFIGURAZIONE DI RETE 1-1/9 HORIZON SQL CONFIGURAZIONE DI RETE 1 CARATTERISTICHE DI UN DATABASE SQL...1-2 Considerazioni generali... 1-2 Concetto di Server... 1-2 Concetto di Client... 1-2 Concetto di database SQL... 1-2 Vantaggi...

Dettagli

Le Liste. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Le Liste 1 / 31

Le Liste. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Le Liste 1 / 31 Le Liste Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Le Liste 1 / 31 Cos è una Lista Una lista è una collezione di elementi omogenei che: potrebbero

Dettagli

Gestione di File e Directory

Gestione di File e Directory Gestione di File e Directory Duplicazione di file descriptor Un file descriptor puo' essere duplicato utilizzando: int dup (int filedes); int dup2(int filedes, int filedes2); dup restituisce un file descriptor

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Operazioni su Liste Doppie e Circolari 2 1 Indice Liste puntate semplici: Gli elementi sono

Dettagli

Le Stringhe. Un introduzione operativa. Luigi Palopoli

Le Stringhe. Un introduzione operativa. Luigi Palopoli Le Stringhe p.1/19 Le Stringhe Un introduzione operativa Luigi Palopoli ReTiS Lab - Scuola Superiore S. Anna Viale Rinaldo Piaggio 34 Pontedera - Pisa Tel. 050-883444 Email: palopoli@sssup.it URL: http://feanor.sssup.it/

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/03/07 Nota Questi lucidi sono tratti

Dettagli

Problem solving avanzato

Problem solving avanzato Problem solving avanzato Formulazione del problema Struttura dati e algoritmo Il programma 2 26 Politecnico di Torino 1 Dati in input (1/4) Sono dati due file di testo, contenenti le informazioni sulle

Dettagli

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO CLSMS SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO Sommario e introduzione CLSMS SOMMARIO INSTALLAZIONE E CONFIGURAZIONE... 3 Parametri di configurazione... 4 Attivazione Software...

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

PRESENTAZIONE DI UN SMS AL GATEWAY

PRESENTAZIONE DI UN SMS AL GATEWAY Interfaccia Full Ascii Con questa interfaccia è possibile inviare i dati al Server utilizzando solo caratteri Ascii rappresentabili e solo i valori che cambiano tra un sms e l altro, mantenendo la connessione

Dettagli

Esercizi svolti durante le ore di Informatica e Sistemi automatici nelle classi del Liceo Scientifico Tecnologico del Liceo Milli di Teramo

Esercizi svolti durante le ore di Informatica e Sistemi automatici nelle classi del Liceo Scientifico Tecnologico del Liceo Milli di Teramo Esercizi svolti durante le ore di Informatica e Sistemi automatici nelle classi del Liceo Scientifico Tecnologico del Liceo Milli di Teramo /*Caricare un vettore di n numeri float, ordinarlo e e stamparlo

Dettagli

Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili

Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili Indirizzo di una funzione 2 Puntatori a funzioni Ver. 2.4 Si può chiamare una funzione utilizzando l indirizzo di memoria dal quale inizia il codice eseguibile della funzione stessa L indirizzo di memoria

Dettagli

Introduzione ai protocolli di rete Il protocollo NetBEUI Il protocollo AppleTalk Il protocollo DLC Il protocollo NWLink Il protocollo TCP/IP

Introduzione ai protocolli di rete Il protocollo NetBEUI Il protocollo AppleTalk Il protocollo DLC Il protocollo NWLink Il protocollo TCP/IP Protocolli di rete Sommario Introduzione ai protocolli di rete Il protocollo NetBEUI Il protocollo AppleTalk Il protocollo DLC Il protocollo NWLink Il protocollo TCP/IP Configurazione statica e dinamica

Dettagli

Un client su arduino invia i dati acquisiti ad un database

Un client su arduino invia i dati acquisiti ad un database Un client su arduino invia i dati acquisiti ad un database PROBLEMA Si vogliono inviare, periodicamente, i dati acquisiti da alcuni sensori ad un database presente su di un server. Arduino con shield Ethernet

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

Modulo 11. Il livello trasporto ed il protocollo TCP Indice

Modulo 11. Il livello trasporto ed il protocollo TCP Indice Pagina 1 di 14 Il livello trasporto ed il protocollo TCP Indice servizi del livello trasporto multiplexing/demultiplexing trasporto senza connesione: UDP principi del trasferimento dati affidabile trasporto

Dettagli

MailStore Proxy è disponibile gratuitamente per tutti i clienti di MailStore Server all indirizzo http://www.mailstore.com/en/downloads.

MailStore Proxy è disponibile gratuitamente per tutti i clienti di MailStore Server all indirizzo http://www.mailstore.com/en/downloads. MailStore Proxy Con MailStore Proxy, il server proxy di MailStore, è possibile archiviare i messaggi in modo automatico al momento dell invio/ricezione. I pro e i contro di questa procedura vengono esaminati

Dettagli

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it INTRODUZIONE, LINGUAGGIO, HANDS ON Giuseppe Cirillo g.cirillo@unina.it Il linguaggio C 1972-Dennis Ritchie 1978-Definizione 1990-ANSI C 1966 Martin Richars (MIT) Semplificando CPL usato per sviluppare

Dettagli

SubnetMask: come funzionano e come si calcolano le sottoreti (SpySystem.it)

SubnetMask: come funzionano e come si calcolano le sottoreti (SpySystem.it) SubnetMask: come funzionano e come si calcolano le sottoreti (SpySystem.it) In una rete TCP/IP, se un computer (A) deve inoltrare una richiesta ad un altro computer (B) attraverso la rete locale, lo dovrà

Dettagli

Modello OSI e architettura TCP/IP

Modello OSI e architettura TCP/IP Modello OSI e architettura TCP/IP Differenza tra modello e architettura - Modello: è puramente teorico, definisce relazioni e caratteristiche dei livelli ma non i protocolli effettivi - Architettura: è

Dettagli

ARP (Address Resolution Protocol)

ARP (Address Resolution Protocol) ARP (Address Resolution Protocol) Il routing Indirizzo IP della stazione mittente conosce: - il proprio indirizzo (IP e MAC) - la netmask (cioè la subnet) - l indirizzo IP del default gateway, il router

Dettagli

Documentazione tecnica

Documentazione tecnica Documentazione tecnica Come spedire via Post 1.1) Invio di Loghi operatore 1.2) Invio delle Suonerie (ringtone) 1.3) Invio di SMS con testo in formato UNICODE UCS-2 1.4) Invio di SMS multipli 1.5) Simulazione

Dettagli

Mod. 4: L architettura TCP/ IP Classe 5 I ITIS G. Ferraris a.s. 2011 / 2012 Marcianise (CE) Prof. M. Simone

Mod. 4: L architettura TCP/ IP Classe 5 I ITIS G. Ferraris a.s. 2011 / 2012 Marcianise (CE) Prof. M. Simone Paragrafo 1 Prerequisiti Definizione di applicazione server Essa è un servizio che è in esecuzione su un server 1 al fine di essere disponibile per tutti gli host che lo richiedono. Esempi sono: il servizio

Dettagli

Ricerca sequenziale di un elemento in un vettore

Ricerca sequenziale di un elemento in un vettore Ricerca sequenziale di un elemento in un vettore La ricerca sequenziale o lineare è utilizzata per ricercare i dati in un vettore NON ordinato. L algoritmo di ricerca sequenziale utilizza quan non ha alcuna

Dettagli

Definizione. File di dati. Insieme di record omogenei memorizzati in memoria di massa. Record. Bianchi. Anna Roma 1980. Verdi. Luca Milano 1960.

Definizione. File di dati. Insieme di record omogenei memorizzati in memoria di massa. Record. Bianchi. Anna Roma 1980. Verdi. Luca Milano 1960. File di dati Definizione File di dati Insieme di record omogenei memorizzati in memoria di massa Bianchi Verdi Neri Verdi Anna Roma 1980 Luca Milano 1960 Andrea Torino 1976 Paola Bari 1954 Record Operazioni

Dettagli

Editor vi. Editor vi

Editor vi. Editor vi Editor vi vi 1 Editor vi Il vi è l editor di testo standard per UNIX, è presente in tutte le versioni base e funziona con qualsiasi terminale a caratteri Permette di visualizzare una schermata alla volta

Dettagli

Reti di Telecomunicazione Lezione 7

Reti di Telecomunicazione Lezione 7 Reti di Telecomunicazione Lezione 7 Marco Benini Corso di Laurea in Informatica marco.benini@uninsubria.it Il protocollo Programma della lezione file transfer protocol descrizione architetturale descrizione

Dettagli

Esercitazione 7. Procedure e Funzioni

Esercitazione 7. Procedure e Funzioni Esercitazione 7 Procedure e Funzioni Esercizio Scrivere un programma che memorizza in un array di elementi di tipo double le temperature relative al mese corrente e ne determina la temperatura massima,

Dettagli

Progetti reali con ARDUINO

Progetti reali con ARDUINO Progetti reali con ARDUINO Introduzione alla scheda Arduino (parte 2ª) ver. Classe 3BN (elettronica) marzo 22 Giorgio Carpignano I.I.S. Primo LEVI - TORINO Il menù per oggi Lettura dei pulsanti Comunicazione

Dettagli

APPLICAZIONI SU PIU FILE

APPLICAZIONI SU PIU FILE APPLICAZIONI SU PIU FILE Serve poter sviluppare applicazioni su piú file: - alcune funzioni e alcune definizioni di dati in un file - altre funzioni e dati in file diversi Perché?? 1. Se il programma è

Dettagli

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti Funzioni matlab per la gestione dei file Informatica B Prof. Morzenti File Contenitori di informazione permanenti Sono memorizzati su memoria di massa Possono continuare a esistere indipendentemente dalla

Dettagli

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio IDE = Integrated Development Environment Gerardo Pelosi 01 Ottobre 2014 Pagina 1 di 8 Dev-C++ - Installazione Potete

Dettagli

Funzioni. Corso di Fondamenti di Informatica

Funzioni. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Funzioni Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e dei

Dettagli

Introduzione al linguaggio C Gli array

Introduzione al linguaggio C Gli array Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome

Dettagli

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi alternative: function nome { lista-comandi } oppure nome ( ) {

Dettagli

MIB PER IL CONTROLLO DELLO STATO DI UN SERVER FTP

MIB PER IL CONTROLLO DELLO STATO DI UN SERVER FTP Università degli Studi di Pisa Facoltà di Scienze Matematiche,Fisiche e Naturali Corso di Laurea in Informatica Michela Chiucini MIB PER IL CONTROLLO DELLO STATO DI UN SERVER

Dettagli

Visibilità dei Membri di una Classe

Visibilità dei Membri di una Classe Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce

Dettagli

Manuale di KDE su Geert Jansen Traduzione del documento: Dario Panico Traduzione del documento: Samuele Kaplun Traduzione del documento: Daniele Micci

Manuale di KDE su Geert Jansen Traduzione del documento: Dario Panico Traduzione del documento: Samuele Kaplun Traduzione del documento: Daniele Micci Geert Jansen Traduzione del documento: Dario Panico Traduzione del documento: Samuele Kaplun Traduzione del documento: Daniele Micci 2 Indice 1 Introduzione 5 2 Usare KDE su 6 3 Funzionamento interno 8

Dettagli

Sottoprogrammi: astrazione procedurale

Sottoprogrammi: astrazione procedurale Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j

Dettagli

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine 1999 Pier Luca Montessoro (si veda la nota a pagina 2) 1 Nota di Copyright

Dettagli

Scilab: I Polinomi - Input/Output - I file Script

Scilab: I Polinomi - Input/Output - I file Script Scilab: I Polinomi - Input/Output - I file Script Corso di Informatica CdL: Chimica Claudia d'amato claudia.damato@di.uniba.it Polinomi: Definizione... Un polinomio è un oggetto nativo in Scilab Si crea,

Dettagli

Il World Wide Web: nozioni introduttive

Il World Wide Web: nozioni introduttive Il World Wide Web: nozioni introduttive Dott. Nicole NOVIELLI novielli@di.uniba.it http://www.di.uniba.it/intint/people/nicole.html Cos è Internet! Acronimo di "interconnected networks" ("reti interconnesse")!

Dettagli

Guida alla scansione su FTP

Guida alla scansione su FTP Guida alla scansione su FTP Per ottenere informazioni di base sulla rete e sulle funzionalità di rete avanzate della macchina Brother, consultare la uu Guida dell'utente in rete. Per ottenere informazioni

Dettagli

DNS (Domain Name System) Gruppo Linux

DNS (Domain Name System) Gruppo Linux DNS (Domain Name System) Gruppo Linux Luca Sozio Matteo Giordano Vincenzo Sgaramella Enrico Palmerini DNS (Domain Name System) Ci sono due modi per identificare un host nella rete: - Attraverso un hostname

Dettagli

GLI ERRORI DI OUTLOOK EXPRESS

GLI ERRORI DI OUTLOOK EXPRESS Page 1 of 6 GLI ERRORI DI OUTLOOK EXPRESS 1) Impossibile inviare il messaggio. Uno dei destinatari non è stato accettato dal server. L'indirizzo di posta elettronica non accettato è "user@dominio altro

Dettagli

Manuale di Remote Desktop Connection. Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci

Manuale di Remote Desktop Connection. Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci Manuale di Remote Desktop Connection Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci 2 Indice 1 Introduzione 5 2 Il protocollo Remote Frame Buffer 6 3 Uso di Remote Desktop

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Modulo 2 - Appendice 3 L'editor vi e cenni su sed

Modulo 2 - Appendice 3 L'editor vi e cenni su sed 1 Modulo 2 - Appendice 3 L'editor vi e cenni su sed Laboratorio di Sistemi Operativi I Anno Accademico 2008-2009 Copyright 2005-2007 Francesco Pedullà, Massimo Verola Copyright 2001-2005 Renzo Davoli,

Dettagli

Record in C: il costruttore struct.

Record in C: il costruttore struct. Record in C: il costruttore struct. Le variabili di tipo record e i nuovi tipi record si dichiarano in C tramite il costruttore di tipo struct:. ::= ;

Dettagli

CARATTERISTICHE DELLE CRYPTO BOX

CARATTERISTICHE DELLE CRYPTO BOX Secure Stream PANORAMICA Il sistema Secure Stream è costituito da due appliance (Crypto BOX) in grado di stabilire tra loro un collegamento sicuro. Le Crypto BOX sono dei veri e propri router in grado

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli