Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

程序运行说明文件

运行环境:Python 3

代码编写工具:VSCode,PyCharm

代码启动选项

  • udpclient.py 启动时必须附加启动参数:server_ipserver_portfile_path
    • 启动后,程序会自动读取指定路径的文件,并使用自定义的可靠传输协议向服务器发送。
  • udpserver.py 启动时必须附加启动参数:server_port,用于指定服务器网络监听的具体端口号。

文件目录结构

文件名 作用
logger.py 日志文件处理模块
reliableudp.py 自定义的基于 UDP 可靠传输协议模块
udpclient.py UDP 可靠传输客户端程序
udpserver.py UDP 可靠传输服务器程序

各文件具体作用

  • logger.py:定义了日志文件的处理机制,供其他模块调用。日志输出格式包含执行时间、记录等级与具体行为内容。客户端运行日志默认写入 run_log.txt,服务器端日志默认写入 run_log_server.txt

  • reliableudp.py:核心的基于 UDP 实现的可靠传输层协议模块。为了弥补原生 UDP 的不可靠性,该模块进行了以下封装设计:

    • 定义了 4 种底层通讯报文类型:_TYPE_INIT(连接握手请求)、_TYPE_ACK(确认回复)、_TYPE_DATA(数据报文)以及 _TYPE_FIN(通信结束标志)。
    • 设计了带有专属校验(利用学号和校验码进行连接认证)的握手流程,拦截非法数据包。
    • 内部实现了超时重传(分包重发阈值控制)、动态滑动窗口(大小限制 400)等关键机制,保障数据不丢失。
    • 为外界提供类似 TCP 的调用接口:connect()(连接服务器)、bind()/accept()(监听握手)、send()recv()(数据收发)。
  • udpclient.py:客户端可执行程序。主要流程包括:

    1. 解析命令行输入的服务器信息(IP、端口)与本地文件路径。
    2. 实例化 ReliableUDP,发起针对服务器的三次握手(连接)。
    3. 连接建立后,将目标文件以二进制(rb)模式进行读取并交由 ReliableUDP 可靠传输通道发往远端服务器。
  • udpserver.py:服务器端可执行程序。主要流程包括:

    1. 解析命令行输入的监听端口号。
    2. 实例化 ReliableUDP 并通过 bind 方法监听该端口。
    3. 通过循环持续挂起 accept 操作,等待合法客户端连接校验;连接达成后转入 recv 操作,可靠地接收客户端传输的完整文件。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages