ESEMPI DI APPLICAZIONI ONC-RPC
|
|
- Anna Maria Mariani
- 8 anni fa
- Visualizzazioni
Transcript
1 ESEMPI DI APPLICAZIONI ONC-RPC Applicazione 1: Procedura remota per la somma di due numeri Applicazione 2: Procedura remota per la realizzazione di una chat Annarita Fierro matricola:
2 Applicazione 1: ADD Il programma prende in input due numeri (stringhe) da riga di comando, analizza il testo ASCII per convertirli in interi, quindi chiama una procedura remota per sommarli e restituisce il risultato
3 Step 1: Creare l IDL Il primo passo consiste nella definizione dell'interfaccia che deve rispettare il formato di Sun per il suo Interface Definition Language (IDL) Un IDL è un file (con suffisso.x) scritto in un linguaggio simile al C, l RPCL (RPC Language) che fornisce le primitive per la definizione dei dati e delle procedure delle RPC Un insieme di procedure remote sono raggruppate in una versione Una o più versioni sono raggruppate in un programma
4 File add.x struct intpair { int a; int b; ; program ADD_PROG { version ADD_VERS { int ADD(intpair) = 1; = 1; = 0x ; Nell esempio l IDL prevede la definizione di una struct intpair che contiene due interi: essa rappresenta il parametro di input per la funzione add L interfaccia avrà anche una versione e un programma. Occorre assegnare un ID ad ogni funzione, versione e programma L ID del programma è un numero a 32 bit. Sun riserva l'intervallo da 0 a 0x1fffffff
5 Step 2: generare i file necessari Per realizzare l RPC è necessario creare il client stub e il server stub che si occupano di convertire i dati dal formato delle particolari macchine a un formato canonico (XDR) indipendente dall architettura, implementando meccanismi di marshalling Gli stub vengono generati automaticamente dal compilatore di protocollo con il comando: rpcgen a C add.x
6
7 File generati
8 add.h File di intestazione incluso nel codice del client e del server. Definisce: la struct intpair ADD_PROG (0x , il numero di programma) ADD_VERS (1, il numero di versione) l'interfaccia client stub (add_1) l'interfaccia per la funzione server-side (add_1_svc) add_svc.c Stub del server che implementa: il main che registra il servizio il listener per il programma: la funzione add_prog_1 (_1 utilizzato per distinguere il numero di versione) switch per tutte le procedure remote supportate dal programma e dalla versione con case NULLPROC (che è sempre supportato), case ADD, che imposta un puntatore (local) per la funzione add_1_svc add_clnt.c Stub del client che: implementa la funzione add_1 effettua il marshalling del parametro chiama la procedura remota restituisce il risultato add_xdr.c contiene il codice per il marshalling dei parametri per la struct intpair utilizza le librerie XDR (External Data Representation) per convertire i due numeri interi in un formato standard Makefile.add Utilizzato per compilare l'applicazione add_server.c e add_client.c rpcgen genera il codice per il template del client e del server necessari per: creare l RPC handle correttamente chiamare correttamente le procedure
9 Stub del Client: add_clnt.c /* * Please do not edit this file. * It was generated using rpcgen. */ #include <memory.h> /* for memset */ #include "add.h" /* Default timeout can be changed using clnt_control() */ static struct timeval TIMEOUT = { 25, 0 ; int * add_1(intpair *argp, CLIENT *clnt) { static int clnt_res; memset((char *)&clnt_res, 0, sizeof(clnt_res)); if (clnt_call (clnt, ADD, (xdrproc_t) xdr_intpair, (caddr_t) argp, (xdrproc_t) xdr_int, (caddr_t) &clnt_res, TIMEOUT)!= RPC_SUCCESS) { return (NULL); return (&clnt_res);
10 Stub del Server: add_svc.c /* * Please do not edit this file. * It was generated using rpcgen. */ #include "add.h" #include <stdio.h> #include <stdlib.h> #include <rpc/pmap_clnt.h> #include <string.h> #include <memory.h> #include <sys/socket.h> #include <netinet/in.h> #ifndef SIG_PF #define SIG_PF void(*)(int) #endif static void add_prog_1(struct svc_req *rqstp, register SVCXPRT *transp) { union { intpair add_1_arg; argument; char *result; xdrproc_t _xdr_argument, _xdr_result; char *(*local)(char *, struct svc_req *); switch (rqstp->rq_proc) { case NULLPROC: (void) svc_sendreply (transp, (xdrproc_t) xdr_void,(char *)NULL); return; case ADD: _xdr_argument = (xdrproc_t) xdr_intpair; _xdr_result = (xdrproc_t) xdr_int; local = (char *(*)(char *, struct svc_req *)) add_1_svc; break; default: svcerr_noproc (transp); return; memset ((char *)&argument, 0, sizeof (argument)); if (!svc_getargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)){ svcerr_decode (transp); return; result = (*local)((char *)&argument, rqstp); if (result!= NULL &&!svc_sendreply(transp, (xdrproc_t) _xdr_result, result)) { svcerr_systemerr (transp); if (!svc_freeargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) { fprintf (stderr, "%s", "unable to free arguments"); exit (1); return; int main (int argc, char **argv) { register SVCXPRT *transp; pmap_unset (ADD_PROG, ADD_VERS); transp = svcudp_create(rpc_anysock); if (transp == NULL) { fprintf (stderr, "%s", "cannot create udp service."); exit(1); if (!svc_register(transp, ADD_PROG, ADD_VERS, add_prog_1, IPPROTO_UDP)) { fprintf (stderr, "%s", "unable to register (ADD_PROG, ADD_VERS, udp)."); exit(1); transp = svctcp_create(rpc_anysock, 0, 0); if (transp == NULL) { fprintf (stderr, "%s", "cannot create tcp service."); exit(1); if (!svc_register(transp, ADD_PROG, ADD_VERS, add_prog_1, IPPROTO_TCP)) { fprintf (stderr, "%s", "unable to register (ADD_PROG, ADD_VERS, tcp)."); exit(1); svc_run (); fprintf (stderr, "%s", "svc_run returned"); exit (1); /* NOTREACHED */
11 File add_xdr.c /* * Please do not edit this file. * It was generated using rpcgen. */ #include "add.h" bool_t xdr_intpair (XDR *xdrs, intpair *objp) { register int32_t *buf; Marshalling dei dati if (!xdr_int (xdrs, &objp->a)) return FALSE; if (!xdr_int (xdrs, &objp->b)) return FALSE; return TRUE;
12 Step 4: Modifica di add_server.c La funzione del server, contenuta in add_server.c va sostituita ai commenti Il server riceve dal client due interi, visualizza la somma e la restituisce al client
13 Step 5: Modifica di add_client.c /* * This is sample code generated by rpcgen. * These are only templates and you can use them * as a guideline for developing your own functions. */ #include "add.h" void add_prog_1(char *host, int a, int b) { CLIENT *clnt; int *result_1; intpair add_1_arg; #ifndef DEBUG clnt = clnt_create (host, ADD_PROG, ADD_VERS, "udp"); if (clnt == NULL) { clnt_pcreateerror (host); exit (1); #endif /* DEBUG */ add_1_arg.a = a; add_1_arg.b = b; result_1 = add_1(&add_1_arg, clnt); if (result_1 == (int *) NULL) { clnt_perror (clnt, "call failed"); else { printf("result = %d\n", *result_1); #ifndef DEBUG clnt_destroy (clnt); #endif /* DEBUG */ int main (int argc, char *argv[]) { char *host; int a, b; if (argc!= 4) { printf ("usage: %s server_host num1 num2\n", argv[0]); exit(1); host = argv[1]; if ((a = atoi(argv[2])) == 0 && *argv[2]!= '0') { fprintf(stderr, "invalid value: %s\n", argv[2]); exit(1); if ((b = atoi(argv[3])) == 0 && *argv[3]!= '0') { fprintf(stderr, "invalid value: %s\n", argv[3]); exit(1); add_prog_1(host, a, b);
14 Step 6: Compilazione Per compilare il codice si esegue il comando: make -f makefile.add L output è il seguente:
15 Step 7: Esecuzione Per eseguire il server si utilizza il comando: sudo./add_server Per eseguire il client si utilizza il comando:./add_client localhost
16 Applicazione 2: CHAT Il programma consente lo scambio di messaggi tra client e server: il client si connette al server e gli invia un messaggio di testo; il server riceve il messaggio da parte del client e risponde. Lo scambio di messaggi termina quando il client digita la stringa «quit»
17 File chat.x program MESSAGEPROG { version PRINTMESSAGEVERS { = 1; = 0x ; string PRINTMESSAGE(string) = 1; Nell esempio l IDL prevede la definizione di una procedura che prende in input un array di char (string nel linguaggio RPCL) e restituisce un array di char NB: a differenza del file add.x, che conteneva anche la definizione di una struct, in questo caso non sono presenti definizioni di variabili
18 File generati Il comando rpcgen a C chat.x genera i seguenti file: NB: il file xdr.c non viene generato
19 chat.h File di intestazione incluso nel codice del client e del server. Definisce: la funzione void LeggiStringa(char *buffer); MESSAGEPROG (0x , il numero di programma) PRINTMESSAGEVERS (1, il numero di versione) l'interfaccia client stub (printmessage_1) l'interfaccia per la funzione server-side (printmessage_1_svc) chat_svc.c Stub del server che implementa: il main che registra il servizio il listener per il programma: la funzione messageprog_1 (_1 utilizzato per distinguere il numero di versione) switch per tutte le procedure remote supportate dal programma e dalla versione con case NULLPROC (che è sempre supportato), case PRINTMESSAGE, che imposta un puntatore (local) per la funzione printmessage_1_svc chat_clnt.c Stub del client che: implementa la funzione printmessage_1 effettua il marshalling del parametro chiama la procedura remota restituisce il risultato Makefile.chat Utilizzato per compilare l'applicazione chat_server.c e chat_client.c rpcgen genera il codice per il template del client e del server necessari per: creare l RPC handle correttamente chiamare correttamente le procedure
20 Stub del Client: chat_clnt.c /* * Please do not edit this file. * It was generated using rpcgen. */ #include <memory.h> /* for memset */ #include "chat.h" /* Default timeout can be changed using clnt_control() */ static struct timeval TIMEOUT = { 25, 0 ; char ** printmessage_1(char **argp, CLIENT *clnt) { static char *clnt_res; memset((char *)&clnt_res, 0, sizeof(clnt_res)); if (clnt_call (clnt, PRINTMESSAGE, (xdrproc_t) xdr_wrapstring, (caddr_t) argp, (xdrproc_t) xdr_wrapstring, (caddr_t) &clnt_res, TIMEOUT)!= RPC_SUCCESS) { return (NULL); return (&clnt_res);
21 Stub del Server: chat_svc.c /* * Please do not edit this file. * It was generated using rpcgen. */ #include "chat.h" #include <stdio.h> #include <stdlib.h> #include <rpc/pmap_clnt.h> #include <string.h> #include <memory.h> #include <sys/socket.h> #include <netinet/in.h> #ifndef SIG_PF #define SIG_PF void(*)(int) #endif static void messageprog_1(struct svc_req *rqstp, register SVCXPRT *transp) { union { char *printmessage_1_arg; argument; char *result; xdrproc_t _xdr_argument, _xdr_result; char *(*local)(char *, struct svc_req *); switch (rqstp->rq_proc) { case NULLPROC: (void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL); return; case PRINTMESSAGE: _xdr_argument = (xdrproc_t) xdr_wrapstring; _xdr_result = (xdrproc_t) xdr_wrapstring; local = (char *(*)(char *, struct svc_req *)) printmessage_1_svc; break; default: svcerr_noproc (transp); return; memset ((char *)&argument, 0, sizeof (argument)); if (!svc_getargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) { svcerr_decode (transp); return; result = (*local)((char *)&argument, rqstp); if (result!= NULL &&!svc_sendreply(transp, (xdrproc_t) _xdr_result, result)) { svcerr_systemerr (transp); if (!svc_freeargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) { fprintf (stderr, "%s", "unable to free arguments"); exit (1); return; int main (int argc, char **argv) { register SVCXPRT *transp; pmap_unset (MESSAGEPROG, PRINTMESSAGEVERS); transp = svcudp_create(rpc_anysock); if (transp == NULL) { fprintf (stderr, "%s", "cannot create udp service."); exit(1); if (!svc_register(transp, MESSAGEPROG, PRINTMESSAGEVERS, messageprog_1, IPPROTO_UDP)) { fprintf (stderr, "%s", "unable to register (MESSAGEPROG, PRINTMESSAGEVERS, udp)."); exit(1); transp = svctcp_create(rpc_anysock, 0, 0); if (transp == NULL) { fprintf (stderr, "%s", "cannot create tcp service."); exit(1); if (!svc_register(transp, MESSAGEPROG, PRINTMESSAGEVERS, messageprog_1, IPPROTO_TCP)) { fprintf (stderr, "%s", "unable to register (MESSAGEPROG, PRINTMESSAGEVERS, tcp)."); exit(1); svc_run (); fprintf (stderr, "%s", "svc_run returned"); exit (1); /* NOTREACHED */
22 Modifica di chat_server.c La funzione del server, contenuta in chat_server.c va sostituita ai commenti
23 Trasmissione per copia/ripristino
24 Modifica di chat_client.c #include "chat.h" { void messageprog_1(char *host, char *msg) #ifndef DEBUG "tcp"); #endif CLIENT *clnt; char * *result_1; clnt = clnt_create (host, MESSAGEPROG, PRINTMESSAGEVERS, if (clnt == NULL) { clnt_pcreateerror (host); exit (1); result_1 = printmessage_1(&msg, clnt); if (result_1 == (char **) NULL) { else { #ifndef DEBUG #endif { clnt_perror (clnt, "call failed"); printf("server: %s\n", *result_1 ); clnt_destroy (clnt); int main (int argc, char *argv[]) char *host; char *messaggio; char temp[100]; char *quit = "quit"; if (argc < 1) { printf ("usage: %s server_host\n", argv[0]); exit (1); host = argv[1]; printf("\ninizia una conversazione [digita \"quit\" per uscire]:\n\n"); while (TRUE) { ; printf("me: "); LeggiStringa(temp); if(strcmp(quit, temp) == 0) break; messaggio = strdup(temp); messageprog_1 (host, messaggio); printf("\nuscita..\n"); exit (0); void LeggiStringa(char *messaggio) { int i = 0; char ch; while ( (ch = getchar())!= '\n') { messaggio[i++] = ch; messaggio[i] = '\0'; //Carattere di fine stringa fflush(stdout); fflush(stdin);
25 Compilazione Come già visto, per compilare il codice si esegue il comando: make -f Makefile.chat L output è il seguente:
26 Esecuzione Per eseguire il server si utilizza il comando: sudo./chat_server Per eseguire il client si utilizza il comando:./chat_client localhost
27 Bibliografia Lucidi delle lezioni [Socket RPC e RMI] Introduction to programming with Sun/ONC RPC [ Writing RPC Applications with the rpcgen Protocol Compiler [ rpc programming with rpcgen in c part2 [ ONC+ Developer's Guide [ Chapter 4. Programming with rpcgen [ Developer/books/IRIX_NetPG/sgi_html/ch04.html]
8 Esercitazione (svolta):
8 Esercitazione (svolta): Remote Procedure Call Esercizio 1: Sviluppare un applicazione C/S che consente di effettuare la somma tra due interi in remoto: File somma.x struct Operandi int op1; int op2;
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 8 (svolta) Remote Procedure Call RPC Antonio Corradi, Luca Foschini Michele Solimando, Giuseppe Martuscelli
DettagliComunicazione nei Sistemi Distribuiti (parte 1)
Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Comunicazione nei Sistemi Distribuiti (parte 1) Corso di Sistemi Distribuiti Valeria Cardellini Anno accademico 2009/10 Comunicazione nei
DettagliChiamate a Procedure Remote
FACOLTA DI SCIENZE MATEMATICHE, FISICHE E NATURALI Corso di Laurea Magistrale in Informatica Corso di Sistemi Distribuiti Anno Accademico 2012/2013 Relazione sullo sviluppo di Chiamate a Procedure Remote
DettagliUniversità degli Studi di Roma Tor Vergata Facoltà di Ingegneria
Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Si basa sempre sullo scambio di messaggi Invio e ricezione di messaggi (a basso livello) Per permettere lo scambio di messaggi, le parti
DettagliCorso di Reti di Calcolatori L-A
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 9 (svolta) RPC: Inizializzazione Strutture Dati sul Server Luca Foschini Anno accademico 2010/2011
DettagliCorso di Reti di Calcolatori L-A
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Implementazione RPC Luca Foschini Anno accademico 2009/2010 Implementazione RPC 1 RPC: motivazioni e modelli Possibilità
Dettagli9 Esercitazione (svolta):
9 Esercitazione (svolta): Remote Procedure Call: callback Callback con rpc Client Callback: meccanismo che permette ad un client di essere notificato dal server al verificarsi dell evento per cui si è
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Implementazione RPC: RPC di SUN Luca Foschini Antonio Corradi Anno accademico 2018/2019 Implementazione RPC 1 RPC:
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori T Implementazione RPC Luca Foschini Anno accademico 2012/2013 Implementazione RPC 1 RPC: motivazioni e modelli Possibilità
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Implementazione RPC: RPC di SUN Luca Foschini Antonio Corradi Anno accademico 2018/2019 Implementazione RPC 1 RPC:
DettagliUniversità degli Studi di Milano
Università degli Studi di Milano Corso di Laurea in Sicurezza dei Sistemi e delle Reti Informatiche. Lezione 1 RPC (Remote Procedure Calls) ERNESTO DAMIANI Modulo 4 - Unità Didattica 2 1.RPC (Remote Procedure
DettagliREQUISITI per IMPLEMENTAZIONE RPC
Remote Procedure Call (RPC) Possibilità di invocare una procedura non locale operazione che interessa un nodo remoto e ne richiede un servizio MODELLO CLIENTE/SERVITORE invocazione di un servizio remoto
DettagliUniversità degli Studi di Roma Tor Vergata Facoltà di Ingegneria
Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Si basa sempre sullo scambio di messaggi Invio e ricezione di messaggi (a basso livello) Per permettere lo scambio di messaggi, le parti
DettagliComunicazione nei Sistemi Distribuiti
Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Comunicazione nei Sistemi Distribuiti Corso di Sistemi Distribuiti e Cloud Computing A.A. 2013/14 Valeria
DettagliSistemi Operativi II Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia
Sistemi Operativi II Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia Architetture client/server: 1. Nozioni di base 2. RPC Paradigma client/server
DettagliFunzioni. Il modello console. Interfaccia in modalità console
Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
Dettagli7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:
7 Esercitazione (svolta): due possibilità: Java RMI: callback Molte applicazioni richiedono un meccanismo publish/subscribe I partecipanti (client) necessitano di notifiche da parte del coordinatore (server)
DettagliFondamenti 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
DettagliLe command line di Java
Le command line di Java Esercitazioni di Programmazione 2 Novella Brugnolli brugnoll@science.unitn.it Ambiente di lavoro Per compilare ed eseguire un programma Java abbiamo bisogno di: The JavaTM 2 Platform,
DettagliI puntatori e l allocazione dinamica di memoria
I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in
DettagliLinguaggio C. Fondamenti. Struttura di un programma.
Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C La nascita del linguaggio C fu dovuta all esigenza di disporre di un Linguaggio ad alto livello adatto alla realizzazione
Dettaglidall argomento argomento della malloc()
Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È
DettagliFondamenti di Informatica 2
Fondamenti di Informatica 2 della prova scritta del 28 Febbraio 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int min = 3; int i; Scrivere la porzione di codice
DettagliLuca 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
DettagliREMOTE Procedure Call Possibilità di invocare una procedura non locale operazione che interessa un nodo remoto e ne richiede un servizio
REMOTE Procedure Call Possibilità di invocare una procedura non locale operazione che interessa un nodo remoto e ne richiede un servizio MODELLO CLIENTE/SERVITORE invocazione di un servizio remoto con
Dettagli(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ&
(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ& 3ULPRHVHUFL]LR6RFNHWVWUHDPFRQULGLUH]LRQH Si progetti un applicazione distribuita Client/Server per una rete di workstation UNIX (BSD oppure System V). In particolare,
DettagliGli 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
DettagliLuca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server
Versione 30.5.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/: applicazioni 1 La logica dei socket Abbiamo visto che un applicazione client si connette
DettagliLaboratorio 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
DettagliMAGAZZINO.CPP January 2, 2008 Page 1
MAGAZZINO.CPP January 2, 2008 Page 1 1 #include 2 #include 3 #include 4 // ==================================================================== 5 // Versione 1.1 1/1/2008
Dettagli----------------------------------------------------------------
---------------------------------------------------------------- utilizzo frequente di chiamate a.. A differenza del Pascal, il C permette di operare con assegnamenti e confronti su dati di tipo diverso,
Dettagli1: /* Nome del programma: gestione_articoli_01.cpp 2: Realizzato da: Gaetano Della Cerra 3: Data: 06/02/2010 - III Informatica Serale I.T.I.S.
1: /* Nome del programma: gestione_articoli_01.cpp 2: Realizzato da: Gaetano Della Cerra 3: Data: 06/02/2010 - III Informatica Serale I.T.I.S. Molinari 4: Il programma gestisce gli articoli di un negozio
DettagliAlfabeto ed elementi lessicali del linguaggio C
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2015-2016 Alfabeto ed elementi lessicali del linguaggio C Pietro Di Lena - pietro.dilena@unibo.it s t a t i c s h o r t l e g s ; i n
DettagliAXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema
AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel
DettagliIntroduzione a GCC: GNU Compiler Collection
Introduzione a GCC: GNU Compiler Collection Caratteristiche di GCC Compilatore multipiattaforma modulare Disponibile per tutti i principali sistemi operativi Può produrre programmi per la maggior parte
DettagliLaboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Prof. Aniello Murano Implementazioni di Liste Doppiamente Puntate e Circolari Corso di Laurea Codice insegnamento Email docente Anno accademico Informatica 13917
DettagliNascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti
Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del
DettagliLibrerie. Laboratorio di Informatica Antonio Monteleone 28
Librerie Una libreria è una collezione di funzioni (classi, variabili) usata per sviluppare applicazioni. Le funzioni (classi, variabili) contenute in una libreria si dicono da questa esportate. L'uso
DettagliCenni 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
DettagliGestione 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
DettagliStudente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Si noti che le soluzioni ai quesiti saranno considerate
DettagliTipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
DettagliLe 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
Dettagli2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.
1 Esercizio 1 1. Immaginate di avere una calcolatore che invece che poter rappresentare i classici due valori per ogni bit (0/1) possa rappresentare 7 valori per ogni bit. (a) Quanti bit gli occorreranno
DettagliEsempio 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
DettagliIntroduzione alla programmazione Java. Dott. Ing. M. Banci, PhD
Introduzione alla programmazione Java Dott. Ing. M. Banci, PhD Obiettivi del corso Creare, compilare, e eseguire programmi Java Tipi di dato primitivi Flusso di controllo Java Metodi Arrays Introduzione
DettagliLaboratorio 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
DettagliEsercitazione sulle libpq - libreria C per PostgreSQL
Esercitazione sulle libpq - libreria C per PostgreSQL Roberto Tronci roberto.tronci@diee.unica.it Basi di Dati A.A. 2007/2008 Tronci ( roberto.tronci@diee.unica.it ) Esercitazione libpq Basi di Dati 2007/2008
DettagliLinguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi
Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori
DettagliUna 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
DettagliLABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015. Indice
LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015 VINCENZO MARRA Indice Parte 1. Input/Output standard dalla console 2 Esercizio 1 2 Eco
DettagliIntroduzione 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
DettagliPer scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli
CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per
Dettaglivoid funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }
FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo
DettagliEsercizio 2. Client e server comunicano attraverso socket TCP
Esercizio 1 Scrivere una applicazione client/server in cui: Il client, in un ciclo infinito: Legge una stringa da standard input Invia al processo server la stringa. Il server visualizza: L'IP da cui si
DettagliFondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'
Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit5.zip contenente i file necessari (solution di VS2008 e progetto compresi). Avvertenze per la consegna: apporre all inizio di
DettagliEsercizi (1-2): da: TCP/IP Sockets in C (Donahoo-Calvert)
Esercizi PARTE 1 Esercizi (1-2): da: TCP/IP Sockets in C (Donahoo-Calvert) When you make a phone call, it s usually the callee that answers with hello. What changes to our example client and server would
DettagliProgrammazione in Java (I modulo) Lezione 3: Prime nozioni
Programmazione in Java (I modulo) Lezione 3: Prime nozioni La volta scorsa Abbiamo avuto un primo assaggio! Abbiamo visto come usare l editor per scrivere un programma Java. Abbiamo analizzato riga per
Dettagli10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.
ESERCIZIARIO Risposte ai quesiti: 10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. 10.2. Un numero intero in Java è compreso nell'intervallo ( 2 31 ) e (2 31
DettagliLa gestione della memoria
La gestione della memoria DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII.UNISI.IT HTTP://WWW.DII.UNISI.IT/~RIGUTINI/
DettagliI/O su Socket TCP: read()
I/O su Socket TCP: read() I socket TCP, una volta che la connessione TCP sia stata instaurata, sono accedibili come se fossero dei file, mediante un descrittore di file (un intero) ottenuto tramite una
DettagliLa prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete
La prima applicazione Java Programma MyFirstApplication Il programma visualizza una finestra vuota sullo schermo. Importo il package delle classi usate nel seguito. Dichiaro la classe MyFirstApplication
DettagliConnessione ad internet
Introduzione al C++ Connessione ad internet Istruzioni per la connessione internet: - una volta connessi, aprire un browser (firefox) - in Modifica/preferenze/avanzate/rete/impostazioni - attivare la modalità
DettagliLaboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014
Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Funzioni: Dichiarazione e Definizione La dichiarazione di una funzione serve a comunicare al compilatore quali sono
DettagliIl client deve stampare tutti gli eventuali errori che si possono verificare durante l esecuzione.
RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2010/2011 Il progetto consiste nello sviluppo di un applicazione client/server. Sia il server che il client dovranno
DettagliLe 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
Dettaglipuntatori Lab. Calc. AA 2007/08 1
puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene
DettagliProblem solving elementare su dati vettoriali
Problem solving elementare su dati vettoriali Introduzione Verifiche su sequenze di dati Selezione o ricerca di dati 2 2006 Politecnico di Torino 1 Introduzione (1/2) I problemi di verifica consistono
DettagliESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)
ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia) Scrivere una funzione per definire se un numero è primo e un programma principale minimale che ne testa la funzionalità. #include
DettagliGESTIONE INFORMATICA DEI DATI AZIENDALI
GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 10 Strutture collegate - 2 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Strutture collegate - 2 1 Contenuti!Strutture
DettagliLinguaggio C Compilazione, linking e preprocessor
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C Compilazione, linking e preprocessor 2001 Pier Luca Montessoro
DettagliIntroduzione a Java Remote Method Invocation (RMI)
Introduzione a Java Remote Method Invocation (RMI) SAPIENZA Università di Roma Corso di Architetture Software Orientate ai Servizi E risuona il mio barbarico yawp sopra i tetti del mondo ( I sound my barbaric
DettagliIl simulatore SPIM SPIM
Il simulatore SPIM Architetture dei Calcolatori (lettere A-I) SPIM SPIM: un simulatore per eseguire programmi assembler scritti per processori MIPS32 Download e materiale relativo alla pagina Web http://www.cs.wisc.edu/~larus/spim.html
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica Introduzione alla programmazione in C++ 1 Un introduzione Che cosa è il C++? La programmazione procedurale La programmazione orientata agli oggetti La programmazione
DettagliJava:Struttura di Programma. Fabio Scanu a.s. 2014/2015
Java:Struttura di Programma Fabio Scanu a.s. 2014/2015 Altre Attenzioni da riservare Java è Case Sensitive: La variabile «a» e la variabile «A» sono diverse Java ha alcune regole di scrittura: I nomi delle
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 16 luglio 2015 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare
DettagliGestione dei File. dischi nastri cd
Gestione dei File Per mantenere disponibili i dati tra le diverse esecuzioni di un programma, questi si devono archiviare in file su memoria di massa (dati persistenti): dischi nastri cd Un file è un astrazione
DettagliRMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it
Java Remote Method Invocation -- RMI G. Prencipe prencipe@di.unipi.it RMI RMI è una tecnologia JAVA che permette a una JVM di comunicare con un altra JVM per farle eseguire metodi È possibile che oggetti
DettagliEsercizio 1. Esercizio 1
Esercizio 1 Un registratore di cassa registra su di un file binario alcuni dati relativi agli scontrini emessi. In particolare, tramite una struttura dati di nome scontrino, il registratore di cassa tiene
DettagliLaboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014
Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014 Damiano Macedonio Esercizio 1 Scrivere una funzione che riceve in ingresso un puntatore ad un array di interi e modifica tale array
DettagliL utility Unix awk [Aho-Weinberger-Kernighan]
L utility Unix awk [Aho-Weinberger-Kernighan] L utility awk serve per processare file di testo secondo un programma specificato dall utente. L utility awk legge riga per riga i file ed esegue una o più
DettagliStrutture. 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
DettagliESERCIZI DI PROGRAMMAZIONE C/C++ per le classi terza
ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi terza vers.0 in lavorazione Docente SAFFI FABIO Contenuti Implementazione delle operazioni di base mediante main in un unico file sorgente... 2 Struttura
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni
DettagliLinguaggio C - Stringhe
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - Stringhe La presente dispensa e da utilizzarsi ai
DettagliUniversità 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
DettagliCompito di Fondamenti di Informatica
Compito di Fondamenti di Informatica In un magazzino viene utilizzato un archivio informatico, nel quale vengono memorizzate le informazioni relative ai prodotti contenuti nel magazzino e che ne permette
DettagliCorso Programmazione 1 Capitolo 01: Concetti Elementari
Corso Programmazione 1 Capitolo 01: Concetti Elementari Docente: Roberto Sebastiani - roberto.sebastiani@unitn.it Esercitatori: Mario Passamani - mario.passamani@unitn.it Alessandro Tomasi - alessandro.tomasi@unitn.it
Dettaglihttp://esamix.labx Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( )
Materiale di ausilio utilizzabile durante l appello: tutto il materiale è a disposizione, inclusi libri, lucidi, appunti, esercizi svolti e siti Web ad accesso consentito in Lab06. L utilizzo di meorie
DettagliLa struttura dati ad albero binario
La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,
Dettagli3. La sintassi di Java
pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer
DettagliAppunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C
Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)
DettagliChat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata.
Chat Si ha un server in ascolto sulla porta 4444 Quando un client richiede la connessione, il server risponde con: Connessione accettata. Nome: Il client deve rispondere con lo user name A questo punto
DettagliDynamic Linking. Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica
Dynamic Linking Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica Dynamic Linking Il linking tra i moduli di un programma e le librerie da esso utilizzate può essere Statico
Dettagli