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