修改了Packet类名称
This commit is contained in:
parent
8d23463809
commit
95d61082e2
@ -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
|
||||||
```
|
```
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user