Extras din proiect
I. Funcționalitate proiect
Proiectul este realizat în Python și modelează transferul de fișiere prin intermediul unui socket. În partea de client, utilizatorul are posibilitatea de a alege o extesie, pentru ca apoi să fie întrebat în legătură cu fiecare fișier în parte, ce are extensia respectivă, dacă dorește sa fie trimis către server. Dacă se dă acceptul, se trimite fișierul respectiv către server.
II. Program server
import socket # Importare modul socket
import os.path
s = socket.socket() # Creare obiect socket
host = socket.gethostname() # returneaza adresa Ipv4 a masinii locale
port = 12345 # Rezerva un port de lucru
s.bind((host, port)) # Face legatura la port
s.listen(5) # Numărul maxim de conexiuni este 5
i=0 #contor pentru construirea numelor de fisiere
while True:
c, addr = s.accept() #Stabilire conexiune cu clientul
print 'Got connection from', addr
file_name=c.recv(1024) #primim de la client numele fișierului
while (file_name): #cât timp se primesc fișiere
print "Receiving ", file_name
extensie=os.path.splitext(file_name)[1] #luăm extensia
f = open('torecv'+str(i)+extensie,'wb') #creăm fișierul nou
i+=1 #incrementăm contorul
filesize=c.recv(1024) #primim de la client dimensiunea fișierului pe care il primim
total=0 #variabilă pentru cantitatea de informații primită din fișier
l = c.recv(1024) #se primesc 1024 biți din fișier
total=len(l) #cantitatea de inf primită până acum
while (l): #cât timp ceea ce s-a preluat nu este None
print "Receiving..."
f.write(l) #scriem în fișier
if (str(total) < filesize): #dacă ceea ce s-a primit până acum este mai puțin decât dimensiunea totală a fișierului
print 'trying to receive'
l = c.recv(1024) #se primește în continuare
total = total + len(l) #se adaugă la cantitatea totală
print total
else: break
f.close()
file_name=c.recv(1024) #se citește următorul nume de fișier
print "Done Receiving"
c.send('Thank you for connecting')
c.close() #se închide conexiunea
Preview document
Conținut arhivă zip
- Retele de calculatoare.docx