修改了Packet类名称
This commit is contained in:
parent
8d23463809
commit
95d61082e2
@ -89,10 +89,10 @@
|
||||
|
||||
### 4.1.1.发送方
|
||||
|
||||
**定义一个数据包类`Package`,包含数据和`seqnum`。**
|
||||
**定义一个数据包类`Packet`,包含数据和`seqnum`。**
|
||||
|
||||
```python
|
||||
class Package:
|
||||
class Packet:
|
||||
def __init__(self, data:str, seq_num:int) -> None:
|
||||
self.data = data
|
||||
self.seq_num = seq_num
|
||||
@ -146,20 +146,20 @@ class NetworkLayer:
|
||||
|
||||
```python
|
||||
def __init__(
|
||||
self,
|
||||
window_size:int,
|
||||
max_seq_num:int,
|
||||
timeout_ms:2000,
|
||||
networkLayer:NetworkLayer,
|
||||
) -> None:
|
||||
self.window_size = window_size
|
||||
self.max_seq_num = max_seq_num
|
||||
self.package_list:list[Package] = [None] * (self.max_seq_num + 1)
|
||||
self.base_num = 1
|
||||
self.next_seq_num = 1
|
||||
self.timeout_ms = timeout_ms
|
||||
self.networkLayer = networkLayer
|
||||
self.timer = None
|
||||
self,
|
||||
window_size:int,
|
||||
max_seq_num:int,
|
||||
timeout_ms:2000,
|
||||
networkLayer:NetworkLayer,
|
||||
) -> None:
|
||||
self.window_size = window_size
|
||||
self.max_seq_num = max_seq_num
|
||||
self.packet_list:list[Packet] = [None] * (self.max_seq_num + 1)
|
||||
self.base_num = 1
|
||||
self.next_seq_num = 1
|
||||
self.timeout_ms = timeout_ms
|
||||
self.networkLayer = networkLayer
|
||||
self.timer = None
|
||||
```
|
||||
|
||||
- 上层调用
|
||||
@ -171,10 +171,10 @@ class NetworkLayer:
|
||||
if self.next_seq_num >= self.base_num + self.window_size:
|
||||
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.package_list[self.next_seq_num].data,
|
||||
self.package_list[self.next_seq_num].seq_num
|
||||
self.packet_list[self.next_seq_num].data,
|
||||
self.packet_list[self.next_seq_num].seq_num
|
||||
)
|
||||
if self.base_num == self.next_seq_num:
|
||||
self.timer = time.time()
|
||||
@ -196,7 +196,7 @@ class NetworkLayer:
|
||||
print(f"将base_num设置为下一个序列编号。")
|
||||
self.timer = None
|
||||
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
|
||||
while seq_index < self.next_seq_num:
|
||||
self.udt_send(
|
||||
self.package_list[seq_index].data,
|
||||
self.package_list[seq_index].seq_num
|
||||
self.packet_list[seq_index].data,
|
||||
self.packet_list[seq_index].seq_num
|
||||
)
|
||||
seq_index += 1
|
||||
```
|
||||
@ -242,7 +242,7 @@ class NetworkLayer:
|
||||
show = []
|
||||
seq_index = self.base_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
|
||||
return show
|
||||
```
|
||||
|
@ -2,16 +2,18 @@ import time
|
||||
import socket
|
||||
import random
|
||||
|
||||
class Package:
|
||||
class Packet:
|
||||
def __init__(self, data:str, seq_num:int) -> None:
|
||||
self.data = data
|
||||
self.seq_num = seq_num
|
||||
|
||||
|
||||
class ApplicationLayer:
|
||||
def __init__(self, data_len:int=5000) -> None:
|
||||
self.data_len = data_len
|
||||
self.data_to_send = ["data{:0>4d}".format(i) for i in range(data_len)]
|
||||
|
||||
|
||||
class NetworkLayer:
|
||||
def __init__(self, host:str, port:int) -> None:
|
||||
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
@ -35,6 +37,7 @@ class NetworkLayer:
|
||||
self.client_socket.close()
|
||||
self.socket.close()
|
||||
|
||||
|
||||
class Sender:
|
||||
def __init__(
|
||||
self,
|
||||
@ -45,7 +48,7 @@ class Sender:
|
||||
) -> None:
|
||||
self.window_size = window_size
|
||||
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.next_seq_num = 1
|
||||
self.timeout_ms = timeout_ms
|
||||
@ -58,10 +61,10 @@ class Sender:
|
||||
if self.next_seq_num >= self.base_num + self.window_size:
|
||||
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.package_list[self.next_seq_num].data,
|
||||
self.package_list[self.next_seq_num].seq_num
|
||||
self.packet_list[self.next_seq_num].data,
|
||||
self.packet_list[self.next_seq_num].seq_num
|
||||
)
|
||||
if self.base_num == self.next_seq_num:
|
||||
self.timer = time.time()
|
||||
@ -79,7 +82,7 @@ class Sender:
|
||||
print(f"将base_num设置为下一个序列编号。")
|
||||
self.timer = None
|
||||
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):
|
||||
index_data = '{:0>3d} '.format(index) + data
|
||||
@ -100,8 +103,8 @@ class Sender:
|
||||
seq_index = self.base_num
|
||||
while seq_index < self.next_seq_num:
|
||||
self.udt_send(
|
||||
self.package_list[seq_index].data,
|
||||
self.package_list[seq_index].seq_num
|
||||
self.packet_list[seq_index].data,
|
||||
self.packet_list[seq_index].seq_num
|
||||
)
|
||||
seq_index += 1
|
||||
|
||||
@ -109,7 +112,7 @@ class Sender:
|
||||
show = []
|
||||
seq_index = self.base_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
|
||||
return show
|
||||
|
||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user