21秋计算机网络小学期——UDP服务器的设计(Python)
21秋计算机网络小学期——UDP服务器的设计(Python)
本程序是我都小学期作业,内部肯定存在很多不是最合适的代码跟算法,望大佬指正。
最终成品链接
本文已经迁移到个人博客,博客链接:http://blog.zhuanjie.ltd/
本文链接:计算机网络小学期——UDP服务器的设计
目录
- 21秋计算机网络小学期——UDP服务器的设计(Python)
- 题目及要求
- 设计思路
- 工具
- 调用函数库
- 解决问题思路
- 流程图
- 服务器端流程图
- 客户端流程图
- 详细设计
- 函数列表
- 运行结果
题目及要求
UDP是TCP/IP协议族为传输层设计的两个协议之一,是一种无连接的,不可靠的协议。由于UDP采取了无连接的方式,因此协议简单,在一些特定的应用中协议运行效率高。UDP适合一些实时的应用,如IP电话、视频会议,它们要求源主机以恒定的速率发送数据,并且在网络出现拥塞时,可以丢失一些数据,但是延迟不能太大。基于这些特点,流式多媒体通信、多播等应用在传输层采用的就是UDP协议。编写一UDP服务器程序,流畅地完成视频文件地传输,要能对多个客户端进行管理。需要通过UDP模拟多个客户端连接验证的情况。
设计思路
工具
a) 编译环境:Python3.10
b) 编译工具:PyCharm
c) 打包工具:pyinstaller
调用函数库
a) time:处理时间的标准库,提供获取系统时间并格式化输出功能
b) socket:帮助在网络上的两个程序之间建立信息通道
c) queue:提供队列操作的模块,用于多个线程之间的数据共享
d) basename:去掉目录路径,单独返回文件名
解决问题思路
本程序由于需要在网络上搭建UDP服务器来传输信息、文件,则必须要定义一个合适的确认连接以及检验文件完成性的功能。
以TCP传输模式为样例,本程序的服务器端和客户端采用了类似TCP的三次握手确认连接和四次挥手断开连接。
本程序采用类似FTP传输模式,利用6000端口来传送控制信息以及一些普通消息,利用7777端口来传输文件信息,利用7778端口来接收ack数据包确认信息。
流程图
服务器端流程图
客户端流程图
详细设计
函数列表
所处位置 | 函数名 | 参数 | 描述 |
---|---|---|---|
服务器端 | sendto | 传输文件名称,客户端套接字 | 用于传输文件 |
服务器端 | recv_ack | 无 | 确认客户端返回的确认信息 |
服务器端 | sendOne | 消息,发送到的客户机的套接字 | 整合发送一条udp消息到指定套接字 |
服务器端 | circlesend | 发送到的客户机的套接字 | 循环发送消息到客户端(基于聊天功能) |
服务器端 | getfire | 文件路径,发送到的客户机的套接字 | 获取文件函数,用于启动发送文件进程和确认客户端返回的确认进程 |
服务器端 | mafun | 消息,发送到的客户机的套接字 | 默认命令消息处理函数 |
服务器端 | diviceConnect | 发送到的客户机的套接字 | 连接到服务器后的设备所启动线程调用的函数 |
服务器端 | receive | 无 | 接受消息并将消息送到管道 |
客户端 | getFile | 文件名 | 获取文件路径,名称 |
客户端 | receive | 无 | 接受消息 |
客户端 | circlesend | 无 | 发送消息 |
运行结果
多客户端连接服务器模拟
21秋计算机网络小学期——UDP服务器的设计(Python)相关推荐
- LwIP应用开发笔记之十一:LwIP带操作系统UDP服务器
我们已经实现了在FreeRTOS系统上的LwIP的移植工作,但只是简单的在系统平台上跑了起来.我们还希望能做更多的事情,这一节我们就在FreeRTOS系统上实现基于LwIP的UDP服务器. 1.U ...
- 21秋福师《计算机网络与通讯》在线作业一[答案]
21秋福师<计算机网络与通讯>在线作业一[答案]答案 试卷总分:100 得分:100 一.单选题 (共 40 道试题,共 80 分) 1.NE3200网卡是( )位网卡. A.8 B.1 ...
- java udp 服务器方_Java的UDP通信的小程序,UDP服务器
我一直工作在不同的方式来满2编码天做到这一点,我需要一些帮助:Java的UDP通信的小程序,UDP服务器 我想在网上创建Java中的多人游戏.要做到这一点,我需要服务器和小应用程序之间的通信 我的印象 ...
- 奥鹏 大工21秋《计算机网络技术》在线作业
可以参考第一题是否一样,如果一样可以直接用下面的答案 大工21秋<计算机网络技术>在线作业1 1 网络协议是通信双方必须遵守的事先约定好的规则,一个网络协议由语法.语义和 ( ) 三部分组 ...
- 中国医科大学21秋学期《药理学(本科)》实践考试试题
中国医科大学21秋学期<药理学(本科)>实践考试试题 试卷总分:30 得分:30 一.单选题 (共 30 道试题,共 30 分) 1.最常引起直立性低血压的药物 A.贝那普利 B.吲达帕胺 ...
- 【python网络编程】创建TCP/UDP服务器进行客户端/服务器间通信
客户端/服务器网络编程介绍 套接字:通信端点 实例:客户端发送数据,接收服务器返回的时间戳 用Python 编写FTP 客户端程序 客户端/服务器网络编程介绍 软件服务器也运行在一块硬件之上,但是没有 ...
- Linux网络编程 | Socket编程(一):Socket的介绍、UDPSocket的封装、UDP服务器/客户端的实现
目录 套接字编程 Sockaddr结构 字节序 地址转换 常用套接字接口 UDP的通信流程 UDPSocket的封装 UDP服务器 UDP客户端 套接字编程 所谓套接字(Socket),就是对网络中不 ...
- 暑假规划及小学期总结
总结 三个周小学期过去了(- - 妈蛋怎么有种写小学生日记的感觉),完成了两个项目,一个飞机大战,一个QT下编程. 飞机大战的编写过程真是日了狗了,以前学C++,吴振寰上课讲了一点MFC,让回来写程序 ...
- 【渝粤教育】21秋期末考试大数据营销10138k2
21秋期末考试大数据营销10138k2 1.当前大数据技术的基础是由( )首先提出的.(1 分) A.阿里巴巴 B.百度 C.微软 D.谷歌 2.哪一项不是"互联网 +税务"行动基 ...
最新文章
- 串口 能 按位传输吗_六类网线能传输多少米?家装六类网线有必要吗?
- 第5周实践项目1 顺序栈建立的算法库
- JBoss EAP6/AS7/WildFly: How to Use Properties Files Outside Your Archive--reference
- python四种数值交换方法
- 使用JQuery实现延迟加载UserControl
- python中对比数组长度_在Python中检索数组长度的首选方法
- C语言中总是从main函数开始执行函数吗?
- 程序员技术测评平台,猿圈宣布获智联数千万 A+轮战略融资
- albert-chinese-ner使用预训练语言模型ALBERT做中文NER
- 微服务框架自带uuid生成器
- 学会这招,从此解决被知乎封号烦恼
- PHP最高权限的获取
- 第1关 Numpy创建数组 (educoder
- 中国房地产还能火多久?
- 自学计算机编程应该看些什么书
- PLSQL查询语句中日期格式使用不当会导致性能和效率很低
- ThinkCMF-smeta扩展字段
- 如何用matlab画烧杯,DLA模型的Matlab程序.doc
- 产品经理的战争:“产品已死 还是产品为王”?
- 10.JavaSE第10天_集合泛型
热门文章
- html中div的定位,html中div定位练习
- 新概念二册 Lesson 13 The Greenwood Boys绿林少年 (将来进行时)
- 创业型公司,你要不要去?
- 编解码学习笔记(三) Mpeg系列——Mpeg 1和Mpeg 2
- zookeeper的重连思考
- Puppet学习之hiera(8)
- 电源管理之pmu驱动分析
- sql server XML中value(),exists(),nodes()方法
- REPL----------------------什么是repl?以及如何理解
- 四旋翼的运动原理及几个飞行问题