From 0e5c12ec75c4b262e6f11f47931d7aac5cfe6587 Mon Sep 17 00:00:00 2001 From: typingbugs <21281280@bjtu.edu.cn> Date: Mon, 15 Apr 2024 16:57:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=A1=E6=97=B6=E5=99=A8?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BB=A5=E5=AE=8C=E5=85=A8=E6=A8=A1=E4=BB=BF?= =?UTF-8?q?GBN=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Labs/Lab3/src/Receiver.py | 4 ++-- Labs/Lab3/src/Sender.py | 16 +++++++--------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/Labs/Lab3/src/Receiver.py b/Labs/Lab3/src/Receiver.py index 4bdf31f..37b974e 100755 --- a/Labs/Lab3/src/Receiver.py +++ b/Labs/Lab3/src/Receiver.py @@ -55,7 +55,7 @@ class Receiver: if __name__ == "__main__": max_seq_num = 20 - networkLayer = NetworkLayer(host="172.29.68.245", port=23666) + networkLayer = NetworkLayer(host="192.168.31.197", port=23666) applicationLayer = ApplicationLayer() receiver = Receiver(networkLayer, applicationLayer) while True: @@ -63,7 +63,7 @@ if __name__ == "__main__": if message: seq_num, data = receiver.extract(message) receiver.deliver_data(data, seq_num) - if receiver.expected_seq_num == max_seq_num: + if receiver.expected_seq_num > max_seq_num: break print("序列传输完成。") networkLayer.close() diff --git a/Labs/Lab3/src/Sender.py b/Labs/Lab3/src/Sender.py index 5bfad45..bd5410c 100644 --- a/Labs/Lab3/src/Sender.py +++ b/Labs/Lab3/src/Sender.py @@ -6,8 +6,6 @@ class Package: def __init__(self, data:str, seq_num:int) -> None: self.data = data self.seq_num = seq_num - self.send_time = None - class ApplicationLayer: def __init__(self, data_len:int=5000) -> None: @@ -52,7 +50,7 @@ class Sender: self.next_seq_num = 1 self.timeout_ms = timeout_ms self.networkLayer = networkLayer - self.timer = False + self.timer = None def rdt_send(self, data:str) -> bool: if self.next_seq_num > max_seq_num: @@ -65,9 +63,8 @@ class Sender: self.package_list[self.next_seq_num].data, self.package_list[self.next_seq_num].seq_num ) - self.package_list[self.next_seq_num].send_time = time.time() if self.base_num == self.next_seq_num: - self.timer = True + self.timer = time.time() self.next_seq_num += 1 return True @@ -77,9 +74,10 @@ class Sender: print(f"(ACK={ack_index}) < (base={self.base_num}),ACK失效丢弃。") return self.base_num = ack_index + 1 + self.timer = time.time() if self.base_num == self.next_seq_num: print(f"将base_num设置为下一个序列编号。") - self.timer = False + self.timer = None else: print(f"将base_num设置为{self.package_list[self.base_num].seq_num}。") @@ -93,9 +91,9 @@ class Sender: print() def is_timeout(self) -> bool: - if self.timer is False: + if self.timer is None: return False - return time.time() - self.package_list[self.base_num].send_time >= 0.001 * self.timeout_ms + return time.time() - self.timer >= 0.001 * self.timeout_ms def gbn(self): seq_index = self.base_num @@ -104,8 +102,8 @@ class Sender: self.package_list[seq_index].data, self.package_list[seq_index].seq_num ) - self.package_list[seq_index].send_time = time.time() seq_index += 1 + self.timer = time.time() def show_gbn(self) -> list[int]: show = []