Esempio n.1

Trasferimento di un file da un client a un server (realizzato da simone-27)

Client

   1 from socket import * #importa tutte le funzioni del modulo socket
   2 
   3 ip='127.0.0.1' #indirizzo ip del server
   4 porta=54321 #porta sulla quale è in ascolto il server
   5 
   6 cli_sock=socket(AF_INET, SOCK_STREAM) #crea un socket (cli_sock)
   7 cli_sock.connect((ip, porta)) #connetti al server
   8 perc=raw_input('Inserire il percorso del file da inviare: ')
   9 file = open(perc,'r') #apri il file perc in lettura
  10 print 'Invio file in corso...'
  11 while 1:
  12     data = file.read(1024) #legge 1024 caratteri ad ogni giro del ciclo
  13     if not data: break #se data è vuoto interrompi il ciclo
  14     cli_sock.send(data) #invia data al server
  15 file.close() #chiudi il file
  16 cli_sock.close() #chiudi il socket

Server

   1 porta=54321 #porta sulla quale restare in attesa
   2 testo=''
   3 
   4 serv_sock=socket(AF_INET, SOCK_STREAM) #crea un socket (serv_sock)
   5 #resta in attesa (la funzione gethostname() restituisce l' ip del server)
   6 serv_sock.bind((gethostname(), 54321))
   7 serv_sock.listen(1) #si mette in ascolto e accetta al max una connessione
   8 cli_sock, cli_info=serv_sock.accept() #accetta le richieste dal client
   9 print 'Ricezione file in corso...'
  10 while 1:
  11     data = cli_sock.recv(1024) #riceve dati dal client
  12     testo+=data
  13     if not data: break #se data è vuoto interrompi il ciclo
  14 perc=raw_input('Inserire il percorso dove vuoi salvare il file: ')
  15 file=open(perc,'w') #apri il file perc in scrittura
  16 file.write(testo) #scrivi testo nel file
  17 file.close() #chiudi il file
  18 cli_sock.close() #chiudi il socket
  19 serv_sock.close() #chiudi il socket


CategoryProgetti

CookBook/Sockets (last edited 2007-08-11 19:34:39 by host87-138-dynamic)