unsigned long inet_addr(cp) char *cp;
|
|
|
- Alessio Nicolosi
- 10 anni fa
- Просмотров:
Транскрипт
1 /* bcopystru.c #include <memory.h> struct point int x; char *y; ; struct point a, b; struct pint *pta, *ptb; a.x = 5; a.y = pippo ; b = a; printf i valori del secondo point sono: %d %s\n,b.x,b.y); pta= struct point *) mallocsizeof struct point)); ptb= struct point *) mallocsizeof struct point)); pta->x)= 10; pta->y)= plutonio ; bcopypta, ptb, sizeofstruct point)); printf la dimensione di *pta e *ptb: %d %d\n, sizeof*pta), sizeof*ptb)); printf la dimensione di pta e ptb: %d %d\n, sizeofpta),sizeofptb)); printf i valori del primo point sono: %d %s\n,pta->x, pta->y); printf i valori del secondo point sono: %d %s\n,ptb->x, pta->y); printf i valori degli indirizzi pta->x, di ptb->:%d %d\n,&pta->x), &ptb->x)); printf i valori degli indirizzi pta->y e di ptb->y: %ld %ld\n, pta->y, ptb ->y); return0); i valori del secondo point sono:5 pippo la dimensione di *pta e *ptb: 8 8 la dimensione di pta e ptb: 4 4 i valori del primo point sono: 10 plutonio i valori del secondo point sono: 10 plutonio i valori degli indirizzi pta->x, di ptb->: i valori degli indirizzi pta->y e di ptb->y:
2 /* intoa.c #include <memory.h> #include <malloc.h> #include <netinet/in.h> /* Internet domain, e il file header piu aggiornato che riguarda l Internet, contiene la definizione di struct in_addr #include <arpa/inet.h> #include <netdb.h> /* contiene la definizione di struct hostent /* char * inet_ntoain) struct in_addr in; unsigned long inet_addrcp) char *cp; struct in_addr struct...; struct...; u_long s_addr; ); struct in_addr server; char *s; unsigned long a; server.s_addr= 255; s= inet_ntoaserver); printf indirizzo: %s\n, s); server.s_addr= 256; s= inet_ntoaserver); printf indirizzo: %s\n, s); server.s_addr= 65535; s= inet_ntoaserver); printf indirizzo: %s\n, s); s= ; a= inet_addrs); printf indirizzo numerico: %u\n, a); returno0); /* prompt> cc intoa.c prompt> a.out indirizzo: indirizzo: indirizzo: indirizzo numerico:456
3 /* pro.c mainargc, argv) int argc; char *argv; int port, porta; printf %s\n, argv[1]); port= atoiargv[2]); sscanfargv[2], %d, &porta); printf %d\n, port); printf %d\n, porta); return0); ) /* pro
4 /* cliu1.c /* Il programma da utilizzarsi in combinazione con servu1.c, genera un socket, nel dominio Unix, di nome endpoint2, attraverso il quale questo programma si mette in comunicazione con il socket, nel dominio di Unix, di nome endpoint1, generato dal programma servu1.c, per inviargli un messaggio dal programma cliu1.c e poi per ricevere un messaggio di risposta. Tale esempio mostra la bidirezionalita del socket endpoint2 #include <sys/un.h /* Unix domain #define BUFLEN 1024 char *msg = Richiesta di servizio dal cli_sock ; int s; int addrlen = sizeofstruct sockaddr_un); struct sockddr_un cli_sock; struct sockaddr_un aiuto; /* struct di appoggio che consente di fare la sendto char buf[buflen]; int cc; /* genera il socket nel dominio UNIX: s= socketaf_unix, SOCK_DGRAM, 0); if s== - 1) perror Client: socket\n ); else printf generazione del socket %d: ok\n, s); /* fai la bind: cli_sock.sun_family = AF_UNIX; strcpycli_sock.sun_path, endpoint2 ); if binds, &cli_sock, sozeofstruct sockaddr_un)) == -1 ) perror Client: bind\n ); /*trasmetti un messaggio attraverso il socket s verso il socket endpoint1 : aiuto.sun_family = AF_UNIX; strcpyaiuto,sun_path, endpoint1 ); if sentos,msg, strlenmsg) +1, 0, &aiuto, strlenaiuto.sun_path)+2) == -1 ) perror Client: error send\nn ); ) printf ATTESA DATI DAL SERVER \n ); /* leggi dal socket s: if cc= reads, buf, BUFLEN)) == -1 perror Client: read\n ); printf Client: ricevuto -> %s\n, buf); unlink endpoint2 )
5 /*servu1.c /* Il programma da utilizzarsi in combinazione con cliu1.c, genera un socket, nel dominio di Unix, di nome endpoint1, attraverso il quale questo programma si mette in comunicazione con il socket, nel dominio di Unix, di nome endpoint2, generato dal programma cliu1.c, per ricevere un messaggio dal programma cliu1.c e poi per inviargli un messaggio di risposta. Tale esempio mostra la bidirezionalita del socket endpoint1. #include <sys/un.h /* Unix domain #define BUFLEN 1024 char *msg = Messagio dal server ; int s; int addrlen = sizeofstruct sockaddr_un); struct sockaddr_un appoggio: /* struct di appoggio che consente di effettuare la recvfrom struct sockaddr_un serv_sock; char buf[buflen]; /* genera il socket nel dominio UNIX: s = socketaf_unix, SOCK_DGRAM, 0); if s == -1) perror Server: socket\n ); else printf generazione del socket %d: ok\n, s); /* fai la bind: serv_sock.sun_family = AF_UNIX; strcpyserv_sock.sun_path, endpoint1 ); if binds, &serv_sock, sizeofstruct sockaddr_un)) == -1 ) perror Server:bind\n ); /* metti il socket s in ricezione di cio che giunge da appoggio: if recvfroms, buf, BUFLEN, 0, &appoggio, &addrlen) == -1 ) perror Server: recvfrom\n ); printf MESSAGGIO DAL CLIENT: %s \n, buf); if sendtos, msg, strlenmsg) -1, 0, &appoggio, addrlen) == -1) perror Server: send\n ); unlink endpoint1 );
6 /* cliu11.c /* Il programma e una variante di cliu1.c Il programma da utilizzarsi in combinazione con servu11.c, genera un socket, nel dominio di Unix, di nome endpoint2, attraverso il quale questo programma si mette in comunicazione con il socket, nel dominio di Unix, di nome endpoint1, generato dal programma servu11.c, per inviargli un messaggio dal programma cliu11.c e poi per ricevere un messaggio di risposta. Tale esempio mostra la bidirezionalita del socket endpoint2. #include <sys/un.h> /* UNIX domain #define BUFLEN 1024 char *msg = Richiesta di servizio dal cli_sock ; int s; int addrlen = sizeofstruct sockaddr_un); struct sockaddr_un cli_sock; struct sockaddr_un aiuto; /* struct di appoggio che consente di fare la sendto char buf[buflen]; int cc; /* genera il socket nel dominio UNIX: s = socketaf_unix, SOCK_DGRAM, 0); if s== -1) perror Client: socket\n ); else printf generazione del socket %d: ok\n, s); /* fai la bind: cli_sock.sun_family = AF_UNIX; strcpycli_sock.sun_path, ëndpoint2 ); if binds, &cli_sock, sizeofstruct sockaddr_un)) == -1) perror Client:bind\n ); /* trasmetti un messaggio attraverso il socket s verso aiuto: aiuto.sun_family = AF_UNIX; strcpyaiuto.sun_path, endpoint1 ); if sendtos, msg, strlenmsg) +1, 0, &aiuto, strlenaiuto.sun_path)+2) == -1) perror Client: error send\n ); printf ATTESA DATI DAL SERVER \n ); /* leggi dal socket s: if cc= reads, buf, BUFLEN)) == -1) perror Client: read\n ); printf Client: ricevuto -> %s\n, buf); unlink endpoint2 );
7 /* servu11.c /* Il programma e una variante di servu1.c Il programma da utilizzarsi in combinazione con cliu11.c, genera un socket, nel sominio Unix, di nome endpoint1, attraverso il quale questo programma si mette in comunicazione con il socket, nel dominio di Unix, di nome endpoint2, generato dal programma cliu1.c, per ricevere un messaggio dal programma cliu1.c e poi per inviargli un messaggio di risposta. Tale esempio mostra la bidirezionalita del socket endpoint1. #include <sys/un.h> /* UNIX domain #define BUFLEN 1024 char *msg = Messaggio dal server ; int s; int addrlen = sizeofstruct sockaddr_un); struct sockaddr_un appoggio; /* struct di appoggio che consente di effettuare la recvfrom struct sockaddr_un serv_sock; char buf[buflem]; /* genera il socket nel dominio Unix: s= socketaf_unix, SOCK_DGRAM, 0); if s== -1) perror Server: socket\n ); else printf generazione del socket %d: ok\n, s); /* fai la bind: serv_sock.sun_family = AF_UNIX; strcpyserv_sock.sun_path, endpoint1 ); if binds, &serv_sock, sizeofstruct sockaddr_un)) == -1) perror Server: bind\n ); if recvfroms, buf, BUFLEN, 0, &appoggio, &addrlen) == -1 ) perror Server: recvfrom\n ); printf MESSAGGIO DAL CLIENT: %s \n, buf); if sendtos, msg, strlenmsg) -1, 0, &appoggio, addrlen) == -1) perror Server: send\n ); unlink endpoint1 );
8 /* cli1.c /* sintassi: clisun <hostname> < port number socket destinatario> #include <netinet/in.h> #include <netdb.h> #define DATA Tanto va la gatta a lardo, che ci rimette lo zampino mainargc, argv) int argc; char *argv[]; int so; struct sockaddr_in aiuto; struct hostent *hp, *gethostbyname); so= socketaf_inet, SOCK_DGRAM, 0); if so <0) perror errore nella creazione del socket\n ); hp= gethostbynameargv[1]); if hp == 0) fprintfstderr,, %s: host0 sconosciuto\n, argv[1]); bcopychar *) hp->h_addr, char*) &aiuto.sin_addr, hp->h_length); aiuto.sin_family= AF_INET; aiuto.sin_port= htonsatoiargv[2])); if sendtoso, DATA, sizeofdata), 0, struct sock_addr *) &aiuto, sizeofaiuto)) <0) perror errore nell invio del messaggio datagram\n ); closeso);
9 /* serv1.c /* Da usarsi in congiunzione con cli1.c #include <netinet/in.h> int sock, lun; struct sockaddr_in nome; char buf[1024]; struct sockaddr_in *from; int fromlen; fromlen= sizeofstruct sockaddr_in); sock= socketaf_inet, SOCK_DGRAM, 0); /* fai la bind con una wildcard: nome.sin_family= AF_INET; nome.sin_addr.s_addr= INADDR_ANY; nome.sin_port = 0; if bindsock, struct sockaddr *) &nome, sizeofnome) ) <0) perror errore nella binding\n ); lun= sizeofnome); if getsocknamesock, struct sockaddr *) &nome, &lun) < 0) perror errore nel trovare la porta associata al socket nome\n ); printf porta del socket #%d\n, ntohsnome.sin_port)); /* if readsock, buf, 1024) < 0) perror errore nella ricezione del pacchetto di datagram\n ); if recvfromsock, buf, sizeofbuf), 0, struct sockaddr *) from, &fromlen) < 0) perror errore nella ricezione del pacchetto di datagram\n ); printf %s\n, buf); closesock); exit0);
COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX
A cura del prof. Gino Tombolini 1 COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX Il sistema UNIX TCP/IP fornisce un meccanismo di comunicazione tra processi residenti su nodi distinti di una rete, compatibili
L uso di Socket UDP. TCP vs. UDP UDP
L uso di Socket UDP TCP TCP vs. UDP UDP 1 Interazione UDP Client/Server Server 1. Creare un socket 2. Assegnare un local address al socket 3. Iterativamente: a. Inviare e ricevere dati 4. Chiudere il socket
Esempio 1: stampa locale di file remoto
Alcuni esempi di uso di Socket Esempio 1: stampa locale di file remoto Visualizzazione locale del contenuto di un file remoto. Il client deve richiedere la creazione della connessione e successivamente
Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server.
Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento
IPC Inter Process Communication
Il protocollo TCP controlla che la trasmissione tra due end points avvenga correttamente. Non stabilisce alcun criterio su chi deve iniziare la comunicazione. Questo compito è svolto dalle applicazioni
Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server.
Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento
L uso di Socket UDP. Usiamo le API Winsock incluse in <Winsock.h> A.A. 2005/06. Dott.ssa Valeria Carofiglio
L uso di Socket UDP Usiamo le API Winsock incluse in A.A. 2005/06 TCP TCP vs. UDP UDP Interazione UDP Client/Server Server 1. (Inizializzare una WSA) 2. Creare una socket 3. Assegnare un local
Applicazione distribuita
La programmazione di applicazioni distribuite in C Il concetto di applicazione distribuita L architettura di una applicazione distribuita Il paradigma a scambio di messaggi Il paradigma client-server Il
Socket TCP. seconda parte
Socket TCP seconda parte Schema della connessione Computer 1 127.43.18.1 indirizzo I1 indirizzo I2 Computer 2 143.225.5.3 porta 45000 socket porta 5200 socket processo client processo server socket(...)
CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 6
UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica, Elettronica e delle Telecomunicazioni a.a. 2005-2006 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 6 1 Socket
Reti (già Reti di Calcolatori )
Reti (già Reti di Calcolatori ) Cenni di Socket Programming Renato Lo Cigno http://disi.unitn.it/locigno/index.php/teaching-duties/computer-networks Socket API Programmazione dei socket Obiettivo:imparare
I Socket. Laboratorio Software 2008-2009 M. Grotto R. Farina
M. Grotto R. Farina Sommario 1. Applicazioni Distribuite 2. I Socket Introduzione Interfacce e protocolli Descrizione Stile di comunicazione Namespace e protocollo Include e system call Creazione e chiusura
Una semplice applicazione client/server 1
Una semplice applicazione client/server 1 Il nostro obiettivo In questa parte del corso implementeremo un applicazione client/server che usa i socket Internet disponibili nei sistemi Unix/Linux. Nello
Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012. - Comunicazione Tra Processi (IPC) - - 2 Parte -
Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012 - Comunicazione Tra Processi (IPC) - - 2 Parte - 1 Sommario Comunicazione tra processi su macchine diverse in rete: Socket TCP o Socket Stream
Acknowledgment: Prof Vincenzo Auletta, Università di Salerno. Approfondimento alla programmazione distribuita
Reti Informatiche Approfondimento alla programmazione distribuita Acknowledgment: Prof Vincenzo Auletta, Università di Salerno Introduzione API send e receive bloccanti e non API select Socket UDP Esempio
Socket TCP. prima parte
Socket TCP prima parte Cosa cambia: socket int fd = socket(pf_inet, SOCK_STREAM, 0); if (fd
Interazione (TCP) Client-Server con le socket
Interazione (TCP) Client-Server con le socket D. Gendarmi Interazione TCP Client/Server Server 2. Assegnare un local address alla socket 3. Settare la socket all ascolto 4. Iterativamente: a. Accettare
Cenni di programmazione distribuita in C++ Mauro Piccolo [email protected]
Cenni di programmazione distribuita in C++ Mauro Piccolo [email protected] Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale
DATAGRAM SOCKET. Angelastro Sergio Diomede Antonio Viterbo Tommaso
DATAGRAM SOCKET Angelastro Sergio Diomede Antonio Viterbo Tommaso Definizione supporta i datagram privo di connessione messaggi inaffidabili di una lunghezza massima prefissata il protocollo UDP supporta
Guida all' uso dei sockets nella programmazione in C
Guida all' uso dei sockets nella programmazione in C ( pseudo-traduzione personalizzata di "Beej's Guide to Network Programming" ) (Prima parte) INTRODUZIONE Finalmente ho trovato una guida chiara e semplice
Architettura e servizi Internet
Architettura e servizi Internet Laboratorio di Sistemi Operativi Corso di Laurea in Informatica Università degli Studi dell'aquila A.A. 2011/2012 Romina Eramo materiale tratto da: Fazio Vincenzo e-mail:
Creare un'elementare backdoor in C in ambiente UNIX
Creare un'elementare backdoor in C in ambiente UNIX DISCLAIMER: Questo tutorial è a solo scopo didattico. L'autore NON si prende alcuna responsabilità circa usi errati o non legali delle informazioni qui
Esercitazione [6] Client/Server con Socket
Esercitazione [6] Client/Server con Socket Leonardo Aniello - [email protected] Daniele Cono D'Elia - [email protected] Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di
Inter-process communication: socket
Le Socket Inter-process communication: socket Abbiamo visti alcune tipologie di Inter-process communication: Anonymous pipes FIFOs o named pipes Le socket di comunicazione si pongono nell'ipc per realizzare:
Basic Sniffer Tutorial
Basic Sniffer Tutorial LnZ Aspinall S.P.I.N.E. Research Group April 2, 2003 Abstract Con questo semplice esempio cerchero di mostrarvi l uso di base delle
Introduzione alla programmazione C di socket
Introduzione alla programmazione C di socket (testo di riferimento : M. J. Donahoo, K. L. Calvert, TCP/IP Sockets in C: Practical Guide for Programmers. Morgan Kaufman Publishers. ) A.A. 2005/06 Una rete
L interfaccia socket
L interfaccia socket Application Programming Interface: API Socket API Procedure base Altre procedure Ordinamento dei byte Interazione client-server orientata alla connessione Interazione client-server
Interazione (TCP) Client-Server con le socket
Interazione (TCP) Client-Server con le socket Interazione TCP Client/Server Server 1. Creare una socket 2. Assegnare un local address alla socket 3. Settare la socket all ascolto 4. Iterativamente: a.
INTERNET DOMAIN SOCKETS (Cap.59)
INTERNET DOMAIN SOCKETS (Cap.59) Internet Domain Stream Socket TCP Internet Domain Datagram Socket UDP A differenza degli UDDS I datagrams possono essere persi duplicati o arrivare in un ordine diverso
Interazione con il DNS Conversioni di Nomi ed Indirizzi
a.a. 2003/04 Interazione con il DNS Conversioni di Nomi ed Indirizzi Prof. Vincenzo Auletta [email protected] http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in
Laboratorio di Programmazione in Rete
Laboratorio di rogrammazione in Rete a.a. 2005/2006 http://www.di.uniba.it/~lisi/courses/prog-rete/prog-rete0506.htm dott.ssa Francesca A. Lisi [email protected] Orario di ricevimento: mercoledì ore 10-12
Una prima applicazione in C per l utilizzo delle socket
Una prima applicazione in C per l utilizzo delle socket Richiamo sulle socket Socket in Windows (WinSock) Differenze tra sistemi operativi D. Gendarmi Socket API API: Application Programming Interface
IPC System V. Code di messaggi
IPC System V Code di messaggi Panoramica coda di messaggi una lista concatenata di messaggi, FIFO semaforo un contatore condiviso, atomicamente modificabile memoria condivisa uno spazio di memoria accessibile
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
INTRODUZIONE ALL INTERFACCIA SOCKET DI BERKELEY E.Mumolo IL MODELLO CLIENT/SERVER
INTRODUZIONE ALL INTERFACCIA SOCKET DI BERKELEY E.Mumolo IL MODELLO CLIENT/SERVER NB : TCP/IP = famiglia di protocolli Il modello client/server e alla base della maggior parte delle applicazioni distribute
Lab. di Sistemi Operativi - Esercitazione n 9- -Thread-
Lab. di Sistemi Operativi - Esercitazione n 9- -Thread- 1 Sommario Esercizi su: Comunicazione tra processi: la funzione pipe() Condivisione dati e codice tra due o più processi: concetto di Thread 2 -
request reply richiesta client processo di servizio processo server principale From - Valeria Cardellini, Corso Sist. Distr. A.A.
Applicazioni di rete Forniscono i servizi di alto livello utilizzati dagli utenti Determinano la percezione di qualità del servizio (QoS) che gli utenti hanno della rete sottostante Programmazione di applicazioni
Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012. - Comunicazione Tra Processi (IPC)- - 1 Parte -
Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012 - Comunicazione Tra Processi (IPC)- - 1 Parte - 1 Sommario Comunicazione tra processi sulla stessa macchina: fifo (qualunque insieme di processi)
Interprocess Communications - II. Franco Maria Nardini
Interprocess Communications - II Franco Maria Nardini XSI IPC Tre tipi di IPC introdotti da System V: semafori shared memory code di messaggi Comunicazioni tra processi su stesso host Tutte consentono
Esercitazione [7] Client/Server con Socket
Esercitazione [7] Client/Server con Socket Leonardo Aniello - [email protected] Daniele Cono D'Elia - [email protected] Federico Lombardi - [email protected] Sistemi di Calcolo - Secondo
rsystem Maximiliano Marchesi [email protected]
Maximiliano Marchesi 28 Settembre 2005 Diario delle Revisioni Revisione 1.2 28 Settembre 2005 [email protected] Sommario Introduzione..................................................................................
