修改了Packet类名称

This commit is contained in:
Jingfan Ke 2024-04-16 15:38:32 +08:00
parent 8d23463809
commit 95d61082e2
3 changed files with 36 additions and 33 deletions

View File

@ -89,10 +89,10 @@
### 4.1.1.发送方 ### 4.1.1.发送方
**定义一个数据包类`Package`,包含数据和`seqnum`。** **定义一个数据包类`Packet`,包含数据和`seqnum`。**
```python ```python
class Package: class Packet:
def __init__(self, data:str, seq_num:int) -> None: def __init__(self, data:str, seq_num:int) -> None:
self.data = data self.data = data
self.seq_num = seq_num self.seq_num = seq_num
@ -146,20 +146,20 @@ class NetworkLayer:
```python ```python
def __init__( def __init__(
self, self,
window_size:int, window_size:int,
max_seq_num:int, max_seq_num:int,
timeout_ms:2000, timeout_ms:2000,
networkLayer:NetworkLayer, networkLayer:NetworkLayer,
) -> None: ) -> None:
self.window_size = window_size self.window_size = window_size
self.max_seq_num = max_seq_num self.max_seq_num = max_seq_num
self.package_list:list[Package] = [None] * (self.max_seq_num + 1) self.packet_list:list[Packet] = [None] * (self.max_seq_num + 1)
self.base_num = 1 self.base_num = 1
self.next_seq_num = 1 self.next_seq_num = 1
self.timeout_ms = timeout_ms self.timeout_ms = timeout_ms
self.networkLayer = networkLayer self.networkLayer = networkLayer
self.timer = None self.timer = None
``` ```
- 上层调用 - 上层调用
@ -171,10 +171,10 @@ class NetworkLayer:
if self.next_seq_num >= self.base_num + self.window_size: if self.next_seq_num >= self.base_num + self.window_size:
return False return False
self.package_list[self.next_seq_num] = Package(data, self.next_seq_num) self.packet_list[self.next_seq_num] = Packet(data, self.next_seq_num)
self.udt_send( self.udt_send(
self.package_list[self.next_seq_num].data, self.packet_list[self.next_seq_num].data,
self.package_list[self.next_seq_num].seq_num self.packet_list[self.next_seq_num].seq_num
) )
if self.base_num == self.next_seq_num: if self.base_num == self.next_seq_num:
self.timer = time.time() self.timer = time.time()
@ -196,7 +196,7 @@ class NetworkLayer:
print(f"将base_num设置为下一个序列编号。") print(f"将base_num设置为下一个序列编号。")
self.timer = None self.timer = None
else: else:
print(f"将base_num设置为{self.package_list[self.base_num].seq_num}。") print(f"将base_num设置为{self.packet_list[self.base_num].seq_num}。")
``` ```
- 向下层发送数据 - 向下层发送数据
@ -229,8 +229,8 @@ class NetworkLayer:
seq_index = self.base_num seq_index = self.base_num
while seq_index < self.next_seq_num: while seq_index < self.next_seq_num:
self.udt_send( self.udt_send(
self.package_list[seq_index].data, self.packet_list[seq_index].data,
self.package_list[seq_index].seq_num self.packet_list[seq_index].seq_num
) )
seq_index += 1 seq_index += 1
``` ```
@ -242,7 +242,7 @@ class NetworkLayer:
show = [] show = []
seq_index = self.base_num seq_index = self.base_num
while seq_index < self.next_seq_num: while seq_index < self.next_seq_num:
show.append(self.package_list[seq_index].seq_num) show.append(self.packet_list[seq_index].seq_num)
seq_index += 1 seq_index += 1
return show return show
``` ```

View File

@ -2,16 +2,18 @@ import time
import socket import socket
import random import random
class Package: class Packet:
def __init__(self, data:str, seq_num:int) -> None: def __init__(self, data:str, seq_num:int) -> None:
self.data = data self.data = data
self.seq_num = seq_num self.seq_num = seq_num
class ApplicationLayer: class ApplicationLayer:
def __init__(self, data_len:int=5000) -> None: def __init__(self, data_len:int=5000) -> None:
self.data_len = data_len self.data_len = data_len
self.data_to_send = ["data{:0>4d}".format(i) for i in range(data_len)] self.data_to_send = ["data{:0>4d}".format(i) for i in range(data_len)]
class NetworkLayer: class NetworkLayer:
def __init__(self, host:str, port:int) -> None: def __init__(self, host:str, port:int) -> None:
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
@ -34,7 +36,8 @@ class NetworkLayer:
def close(self): def close(self):
self.client_socket.close() self.client_socket.close()
self.socket.close() self.socket.close()
class Sender: class Sender:
def __init__( def __init__(
self, self,
@ -45,7 +48,7 @@ class Sender:
) -> None: ) -> None:
self.window_size = window_size self.window_size = window_size
self.max_seq_num = max_seq_num self.max_seq_num = max_seq_num
self.package_list:list[Package] = [None] * (self.max_seq_num + 1) self.packet_list:list[Packet] = [None] * (self.max_seq_num + 1)
self.base_num = 1 self.base_num = 1
self.next_seq_num = 1 self.next_seq_num = 1
self.timeout_ms = timeout_ms self.timeout_ms = timeout_ms
@ -58,10 +61,10 @@ class Sender:
if self.next_seq_num >= self.base_num + self.window_size: if self.next_seq_num >= self.base_num + self.window_size:
return False return False
self.package_list[self.next_seq_num] = Package(data, self.next_seq_num) self.packet_list[self.next_seq_num] = Packet(data, self.next_seq_num)
self.udt_send( self.udt_send(
self.package_list[self.next_seq_num].data, self.packet_list[self.next_seq_num].data,
self.package_list[self.next_seq_num].seq_num self.packet_list[self.next_seq_num].seq_num
) )
if self.base_num == self.next_seq_num: if self.base_num == self.next_seq_num:
self.timer = time.time() self.timer = time.time()
@ -79,7 +82,7 @@ class Sender:
print(f"将base_num设置为下一个序列编号。") print(f"将base_num设置为下一个序列编号。")
self.timer = None self.timer = None
else: else:
print(f"将base_num设置为{self.package_list[self.base_num].seq_num}") print(f"将base_num设置为{self.packet_list[self.base_num].seq_num}")
def udt_send(self, data:str, index:int): def udt_send(self, data:str, index:int):
index_data = '{:0>3d} '.format(index) + data index_data = '{:0>3d} '.format(index) + data
@ -100,8 +103,8 @@ class Sender:
seq_index = self.base_num seq_index = self.base_num
while seq_index < self.next_seq_num: while seq_index < self.next_seq_num:
self.udt_send( self.udt_send(
self.package_list[seq_index].data, self.packet_list[seq_index].data,
self.package_list[seq_index].seq_num self.packet_list[seq_index].seq_num
) )
seq_index += 1 seq_index += 1
@ -109,7 +112,7 @@ class Sender:
show = [] show = []
seq_index = self.base_num seq_index = self.base_num
while seq_index < self.next_seq_num: while seq_index < self.next_seq_num:
show.append(self.package_list[seq_index].seq_num) show.append(self.packet_list[seq_index].seq_num)
seq_index += 1 seq_index += 1
return show return show