Professional Documents
Culture Documents
Digital Assignment– 2
Server.py
import socket
import threading
import os
from ftplib import FTP
class Server:
def __init__(self):
self.s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
self.accept_connections()
filename = 'input.txt'
localfile = open(filename, 'wb')
ftp.retrbinary('RETR ' + filename, localfile.write, 1024)
ftp.quit()
localfile.close()
def accept_connections(self):
ip = socket.gethostbyname(socket.gethostname())
port = 8080
self.s.bind((ip,port))
self.s.listen(100)
while 1:
c, addr = self.s.accept()
print(c)
threading.Thread(target=self.handle_client,args=(c,addr,)).start()
def handle_client(self,c,addr):
data = c.recv(1024).decode()
if not os.path.exists(data):
c.send("file-doesn't-exist".encode())
else:
c.send("file-exists".encode())
print('Sending',data)
if data != '':
c.shutdown(socket.SHUT_RDWR)
c.close()
server = Server()
Client.py
import socket
import os
from ftplib import FTP
from datetime import date
import calendar
class Client:
def __init__(self):
self.s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
self.connect_to_server()
def connect_to_server(self):
self.target_ip = '127.0.0.1'
self.target_port = 8080
self.s.connect((self.target_ip,int(self.target_port)))
self.main()
def reconnect(self):
self.s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
self.s.connect((self.target_ip,int(self.target_port)))
def main(self):
while 1:
file_name = 'input.txt'
self.s.send(file_name)
confirmation = self.s.recv(1024)
if confirmation.decode() == "file-doesn't-exist":
print("File doesn't exist on server.")
self.s.shutdown(socket.SHUT_RDWR)
self.s.close()
self.reconnect()
if not data:
break
file.write(data)
YashviMonth=(int)(data[0]+data[1])
print(type(YashviMonth))
#print(YashviMonth+"Is the number of month
that we need to find sundays of")
#numberr=(int)YashviMonth
#print(numberr)
print("The number of month:\n")
print(YashviMonth)
Year= 2021
A=calendar.TextCalendar(calendar.SUNDAY)
for b in range(1,13):
if b!=YashviMonth:
continue
for k in A.itermonthdays(Year,b):
if k!=0:
day=date(Year,b,k)
if day.weekday()==6:
print("%s,%d-%d-%d" %
(calendar.day_name[6] ,k,b,Year))
print(file_name,'successfully downloaded.')
self.s.shutdown(socket.SHUT_RDWR)
self.s.close()
self.reconnect()
client = Client()