GBN-Python 项目使用教程
1. 项目目录结构及介绍
GBN-Python 项目的目录结构如下:
gbn-python/
├── __pycache__/
├── HarryPotter.txt
├── LICENSE
├── PDU.py
├── README.md
├── UDT.py
├── crc16.py
├── makefile
├── packet.py
├── receiver.py
├── sender.py
├── server.py
├── timer.py
└── 斗罗大陆.txt
目录结构介绍
- pycache/: Python 编译后的字节码文件缓存目录。
- HarryPotter.txt: 示例文件,用于测试文件传输。
- LICENSE: 项目许可证文件,采用 Apache-2.0 许可证。
- PDU.py: 定义了数据包(PDU)的格式和相关操作。
- README.md: 项目的介绍文件。
- UDT.py: 实现用户数据报协议(UDP)的相关功能。
- crc16.py: 实现 CRC-16 校验功能。
- makefile: 项目的 Makefile,用于自动化构建和测试。
- packet.py: 实现数据包的组帧和提取功能。
- receiver.py: 接收端程序,负责接收数据并发送 ACK。
- sender.py: 发送端程序,负责发送数据并处理 ACK。
- server.py: 服务器端程序,用于启动发送和接收进程。
- timer.py: 实现计时器功能,用于超时重传。
- 斗罗大陆.txt: 另一个示例文件,用于测试文件传输。
2. 项目启动文件介绍
server.py
server.py 是项目的启动文件,负责启动发送和接收进程。它通过调用 sender.py 和 receiver.py 来实现文件的传输。
# server.py
import sender
import receiver
# 启动发送端
sender.start()
# 启动接收端
receiver.start()
sender.py
sender.py 是发送端程序,负责将文件数据打包并发送到接收端。它使用 GBN 协议来确保数据的可靠传输。
# sender.py
import socket
import PDU
import UDT
import _thread
import timer
import sys
import packet
import crc16
import time
import threading
# 发送函数
def send(sock, filename, IP_PORT, RECEIVER_ADDR):
# 发送逻辑
pass
# 启动发送端
def start():
# 启动逻辑
pass
receiver.py
receiver.py 是接收端程序,负责接收发送端发送的数据,并发送 ACK 确认。
# receiver.py
import socket
import packet
import crc16
import UDT
import sys
import time
# 接收函数
def receive(sock, filename, IP_PORT):
# 接收逻辑
pass
# 启动接收端
def start():
# 启动逻辑
pass
3. 项目的配置文件介绍
GBN-Python 项目没有明确的配置文件,但可以通过修改代码中的参数来调整项目的行为。例如,可以在 sender.py 和 receiver.py 中调整窗口大小、超时时间等参数。
示例:调整窗口大小
在 sender.py 中,可以通过修改 window_size 来调整窗口大小:
# sender.py
window_size = 200 # 默认窗口大小
示例:调整超时时间
在 timer.py 中,可以通过修改 interval 来调整超时时间:
# timer.py
interval = 1 # 默认超时时间(秒)
通过这些调整,可以优化 GBN 协议的性能和可靠性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



