Esempi di programmi client/server in Python

Похожие документы
Fondamenti di Internet e Reti. Antonio Capone, Matteo Cesana, Ilario Filippini, Guido Maier

Applicazioni di rete. Applicazioni di rete

Reti di Calcolatori:

Programmare con le Socket TCP

Programmare con le Socket

Programmare con le Socket TCP in java. 2: Application Layer 1

DNS: Domain Name System

DNS: Domain Name System

Introduzione alle applicazioni di rete

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori (a.a. 2010/11)

DNS: Domain Name System

Interazione (TCP) Client-Server con le socket

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

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

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

DNS: Domain Name System

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

Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_ Stefano Millozzi

Creare una applicazione Winsock di base

Parte II: Reti di calcolatori Lezione 10

DATAGRAM SOCKET. Angelastro Sergio Diomede Antonio Viterbo Tommaso

Esercitazione [6] Client/Server con Socket

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori (a.a. 2011/12)

Telematica II 12. Esercitazione/Laboratorio 4

Esercitazione Monitoraggio temperatura via WEB mediante Arduino YUN

Controllo Winsock di Visual Basic

Cenni di programmazione distribuita in C++ Mauro Piccolo

Socket & RMI Ingegneria del Software - San Pietro

Protocolli per il Web. Impianti Informatici. Protocolli applicativi

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

Applicazioni web. Parte 5 Socket

Programmazione in Rete

Esercitazione. Formato di compitini e compiti: domande ed esercizi "closed book" G. Ferrari - Reti di calcolatori.

Programmazione dei socket con TCP #2

Altri tipi di connessione

Livello applicazione: (RFC), protocollo FTP, protocollo Posta Elettronica, servizi di trasporto

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

Telematica di Base. IL Livello di Trasporto TCP

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

Paradigma client-server

Basic Network Tutorial

Elementi di programmazione con interfaccia Socket

Il Linguaggio Java: Socket.

Laboratorio di Programmazione in Rete

Introduzione al corso

Networking. Mauro Migliardi Ph. D.

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

Esercizio 2. Client e server comunicano attraverso socket TCP

COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX

Input/output in C e in C++

Servizi di rete e web. Prof. Maurizio Naldi A.A. 2015/16

Esercizi (1-2): da: TCP/IP Sockets in C (Donahoo-Calvert)

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

TCP/IP : Livello 3 di rete ARP (Address Resolution Protocol)

Programmazione di rete in Java

I Socket. Laboratorio Software M. Grotto R. Farina

Piattaforme Software Distribuite. Roberto Beraldi

Software per l individuazione dei malfunzionamenti di rete

Socket Programming HOWTO

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

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

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

Creare un'elementare backdoor in C in ambiente UNIX

Laboratorio di reti I: Il pacchetto java.net

Chat. Si ha un server in ascolto sulla porta Quando un client richiede la connessione, il server risponde con: Connessione accettata.

Da

Web e HTTP. path name. host name Realizzato da Roberto Savino.

Corsi di Reti di Calcolatori (Docente Luca Becchetti)

Tecniche di compressione senza perdita

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO. Facoltà di Ingegneria Università degli Studi di Udine. Compressione audio

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

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Acknowledgment: Prof Vincenzo Auletta, Università di Salerno. Approfondimento alla programmazione distribuita

IL LIVELLO TRASPORTO Protocolli TCP e UDP

Tecnologie Web L-A. Java e HTTP. Dario Bottazzi Tel , dario.bottazzi@unibo.it, SkypeID: dariobottazzi. Java e TCP/IP in a Nutshell

HTTP adaptation layer per generico protocollo di scambio dati

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

IL LIVELLO TRASPORTO Protocolli TCP e UDP

rsystem Maximiliano Marchesi

Arduino. Laboratorio Arduino Base. HackLab Terni. Laboratorio aperto a tutti di elettronica, scienza e arte. hacklabterni.

Socket TCP. seconda parte

Applicazioni distribuite

Tesina esame Programmazione di Sistemi Mobile realizzata da Roberto Giuliani matricola Sockets e DatagramSocket

IPC Inter Process Communication

Транскрипт:

Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori I Roberto Canonico (roberto.canonico@unina.it) Giorgio Ventre (giorgio.ventre@unina.it) Esempi di programmi client/server in Python I lucidi presentati al corso sono uno strumento didattico che NON sostituisce i testi indicati nel programma del corso

Nota di copyright per le slide COMICS Nota di Copyright Questo insieme di trasparenze è stato ideato e realizzato dai ricercatori del Gruppo di Ricerca COMICS del Dipartimento di Informatica e Sistemistica dell Università di Napoli Federico II. Esse possono essere impiegate liberamente per fini didattici esclusivamente senza fini di lucro, a meno di un esplicito consenso scritto degli Autori. Nell uso dovranno essere esplicitamente riportati la fonte e gli Autori. Gli Autori non sono responsabili per eventuali imprecisioni contenute in tali trasparenze né per eventuali problemi, danni o malfunzionamenti derivanti dal loro uso o applicazione. Autori: Simon Pietro Romano, Antonio Pescapè, Stefano Avallone, Marcello Esposito, Roberto Canonico, Giorgio Ventre

Disclaimer Gli esempi sono presi dalla sesta edizione del testo: Kurose-Ross - Reti di calcolatori e internet Non si intende presentare qui il linguaggio Python, ma evidenziare analogie e differenze tra la programmazione delle applicazioni client/server in Python rispetto a C 3

Client/server socket interaction: UDP server (running on hostid) create socket, port= x: serversocket = socket(af_inet,sock_dgram) create socket: client clientsocket = socket(af_inet,sock_dgram) read datagram from serversocket Create datagram with hostid and port=x; send datagram via clientsocket write reply to serversocket specifying client address, port number read datagram from clientsocket close clientsocket 4

UDP client in Python # -*- coding: utf-8 -*- # include Python s socket library from socket import * servername = localhost serverport = 12000 # create UDP socket clientsocket = socket(af_inet, SOCK_DGRAM) # get user keyboard input message = raw_input( Input lowercase sentence: ) # Attach server name, port to message; send into socket clientsocket.sendto(message, (servername, serverport)) # read reply message from socket into modifiedmessage string modifiedmessage, serveraddress = clientsocket.recvfrom(2048) # Print out received modifiedmessage string print modifiedmessage # Close socket clientsocket.close() 5

UDP server in Python # -*- coding: utf-8 -*- # include Python s socket library from socket import * serverport = 12000 # create UDP socket serversocket = socket(af_inet, SOCK_DGRAM) # bind socket to local port number 12000 serversocket.bind(('', serverport)) print The server is ready to receive # Loop forever while 1: # Read from UDP socket into message # getting client IP and port message, clientaddress = serversocket.recvfrom(2048) # Convert message to upper case modifiedmessage = message.upper() # Send back modified string to client serversocket.sendto(modifiedmessage, clientaddress) 6

Client/server socket interaction: TCP server (running on hostid) create socket, port=x serversocket = socket( ) serversocket.bind( ) serversocket.listen( ) wait for incoming connection request connectionsocket = serversocket.accept() read request using connectionsocket.recv() write reply using connectionsocket.send( ) close connectionsocket TCP connection setup client create socket clientsocket = socket( ) connect to hostid, port=x clientsocket.connect( ) send request using clientsocket.send( ) read reply using clientsocket.recv( ) close clientsocket 7

TCP client in Python # -*- coding: utf-8 -*- # include Python s socket library from socket import * servername = localhost serverport = 12000 # create TCP socket clientsocket = socket(af_inet, SOCK_STREAM) # connect socket to remote server at (servername, serverport) clientsocket.connect((servername, serverport)) # get user keyboard input sentence = raw_input( Input lowercase sentence: ) # Send sentence into socket, no need to specify server IP and port clientsocket.send(sentence) # read reply message from socket into modifiedmessage string modifiedsentence = clientsocket.recv(1024) # Print out received modifiedmessage string print modifiedsentence # Close socket clientsocket.close() 8

TCP server in Python # -*- coding: utf-8 -*- # include Python s socket library from socket import * serverport = 12000 # create TCP socket serversocket = socket(af_inet, SOCK_STREAM) # bind socket to local port number 12000 serversocket.bind(('', serverport)) # put socket in passive mode serversocket.listen(1) print The server is ready to receive # Loop forever while 1: # server waits for incoming connections on accept() # for incoming requests, new socket created on return connectionsocket, addr = serversocket.accept() # receive sentence on newly established connectionsocket sentence = connectionsocket.recv(1024) # convert message to upper case modifiedsentence = sentence.upper() # send back modified string to client connectionsocket.send(modifiedsentence) 9