Skip to content
Snippets Groups Projects
Commit 9f006d43 authored by mgstabrani's avatar mgstabrani
Browse files

Change window

parent 8ff385c2
Branches
No related merge requests found
......@@ -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
......
......@@ -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
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment