diff --git a/client.py b/client.py
index 4be6e27a27c6bee02a2eceaaeb79b7511c399a08..bd00aa2e1a03463cab472d222bbff84fab410010 100644
--- a/client.py
+++ b/client.py
@@ -2,6 +2,7 @@ import socket
 import sys
 from common import *
 from buffer import FileBuffer
+import time
 
 class Client():
 
@@ -110,7 +111,9 @@ class Client():
                 seg.setACK()
                 self.send(seg.to_bytes(), self.DST_ADDR)
                 log(f"Segment SEQ={rcvd.get_seq_no()}, FIN", "Received, Ack sent")
-                
+
+                time.sleep(0.1)
+
                 seg = Segment(seg.get_seq_no())
                 seg.setFIN()
                 self.send(seg.to_bytes(), self.DST_ADDR)
@@ -127,23 +130,22 @@ class Client():
                 break
             
             elif not rcvd.test_checksum() or rcvd.get_seq_no() > base:
-                refuse_segment = Segment()
-                refuse_segment.set_seq_no(0)
-                refuse_segment.set_ack_no(base)
-                refuse_segment.setSYN()
-                self.send(refuse_segment.to_bytes(), server_addr)
+                # refuse_segment = Segment()
+                # refuse_segment.set_seq_no(0)
+                # refuse_segment.set_ack_no(base)
+                # refuse_segment.setSYN()
+                # self.send(refuse_segment.to_bytes(), server_addr)
 
                 log("!", f"WARNING!!! Segment refused")
 
             elif rcvd.get_seq_no() < base:
-                ack_segment = Segment()
-                ack_segment.set_seq_no(0)
-                ack_segment.set_ack_no(base)
-                ack_segment.getACK()
-                self.send(ack_segment.to_bytes(), server_addr)
+                # ack_segment = Segment()
+                # ack_segment.set_seq_no(0)
+                # ack_segment.set_ack_no(base)
+                # ack_segment.getACK()
+                # self.send(ack_segment.to_bytes(), server_addr)
 
                 log("!", f"WARNING!!! Segment already received")
-                break
         
         # ini mau void apa mau return data_ret yakk wkwkkwkwkwkwk
         return
diff --git a/server.py b/server.py
index f33a0b47d4fd5126a40d4b56bdcc080194ea56c4..eb4b6c20d2c708366f90f6fd718126e164aee9a6 100644
--- a/server.py
+++ b/server.py
@@ -11,7 +11,7 @@ class Server():
         self.SERVER_PORT = port
         self.FILE_PATH = filepath
         self.clients = []
-        self.N = 1
+        self.N = 4
 
         self.init_socket()
         self.listen()
@@ -95,6 +95,8 @@ class Server():
         count = len(list_of_segments)
         log("!", f"File segmented into {count} segments")
 
+        acked = [False for _ in range(count)]
+
         base = 0
         timeout = 0
         while True:
@@ -107,12 +109,17 @@ class Server():
                     self.send(seg.to_bytes(), client_addr)
                     log(f"Segment SEQ={seg.get_seq_no()}", "Sent")
             try:
-                byte, _ = self.recv()
-                rcvd = Segment().from_bytes(byte)
-                if rcvd.test_checksum() and rcvd.get_ack_no() == base:
-                    print(list_of_segments[base].bytes[12:22])
-                    log(f"Segment SEQ={rcvd.get_seq_no()}", "Acked")
-                    base += 1
+                listen = self.N
+                if base + listen >= count:
+                    listen = count-base
+                for i in range(listen):
+                    if (base+i) < count:
+                        byte, _ = self.recv()
+                        rcvd = Segment().from_bytes(byte)
+                        if rcvd.test_checksum() and rcvd.get_ack_no() == base:
+                            print(list_of_segments[base].bytes[12:22])
+                            log(f"Segment SEQ={rcvd.get_ack_no()}", "Acked")
+                            base += 1
                 if base >= count:
                     break
                 timeout = 0