From 970c4e743684568d75cff7c20e70123654162c62 Mon Sep 17 00:00:00 2001 From: mgstabrani <mgstabrani19@gmail.com> Date: Thu, 25 Nov 2021 16:58:13 +0700 Subject: [PATCH] Fix server --- server.py | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/server.py b/server.py index 77c105f..a3b44dc 100644 --- a/server.py +++ b/server.py @@ -5,17 +5,18 @@ from common import * class Server(): - def __init__(self, port=10000, filepath="input"): + def __init__(self, port=10000, filepath="data/halo.txt"): self.SERVER_PORT = port self.FILE_PATH = filepath self.clients = [] self.init_socket() - self.listen() - for client in self.clients : - self.handshake(client) - self.send_file(client) - self.close_con(client) + + if(self.listen() != "n"): + for client in self.clients : + self.handshake(client) + self.send_file(client) + self.close_con() def init_socket(self): self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) @@ -23,7 +24,10 @@ class Server(): self.socket.bind((HOST_NAME, self.SERVER_PORT)) def send(self, data, client_addr): - self.socket.sendto(data, client_addr) + if(type(data) == str): + self.socket.sendto(str.encode(data), client_addr) + else: + self.socket.sendto(data, client_addr) def recv(self): return self.socket.recvfrom(SEG_SIZE) @@ -47,8 +51,9 @@ class Server(): log("?", "Listen more? (y/n) ", end="") choice = input() if choice == "n": - print() - break + self.close_con() + print() + return choice def handshake(self, client_addr): # To-DO @@ -77,11 +82,13 @@ class Server(): self.send(segment.to_bytes(), client_addr) log(f"Segment SEQ={recved.get_seq_no()}, SYN", "Received, Ack sent") + print() + return True def send_file(self, client_addr): # To-Do - file_size = os.path.getSize(self.FILE_PATH) + file_size = os.path.getsize(self.FILE_PATH) with open(self.FILE_PATH, "rb") as f: file = f.read() @@ -94,9 +101,11 @@ class Server(): self.send(self.FILE_PATH + f"-{file_size}", client_addr) log("!", "File path and size sent") + print() + return True - def close_con(self, client_addr): + def close_con(self): # To-Do self.socket.close() log("!", "Connection is closed") @@ -104,6 +113,6 @@ class Server(): if __name__=="__main__": try: - Server(port=sys.argv[1]); + Server(port=sys.argv[1], filepath=sys.argv[2]); except: Server(); \ No newline at end of file -- GitLab