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)相关推荐

  1. LwIP应用开发笔记之十一:LwIP带操作系统UDP服务器

      我们已经实现了在FreeRTOS系统上的LwIP的移植工作,但只是简单的在系统平台上跑了起来.我们还希望能做更多的事情,这一节我们就在FreeRTOS系统上实现基于LwIP的UDP服务器. 1.U ...

  2. 21秋福师《计算机网络与通讯》在线作业一[答案]

    21秋福师<计算机网络与通讯>在线作业一[答案]答案 试卷总分:100  得分:100 一.单选题 (共 40 道试题,共 80 分) 1.NE3200网卡是( )位网卡. A.8 B.1 ...

  3. java udp 服务器方_Java的UDP通信的小程序,UDP服务器

    我一直工作在不同的方式来满2编码天做到这一点,我需要一些帮助:Java的UDP通信的小程序,UDP服务器 我想在网上创建Java中的多人游戏.要做到这一点,我需要服务器和小应用程序之间的通信 我的印象 ...

  4. 奥鹏 大工21秋《计算机网络技术》在线作业

    可以参考第一题是否一样,如果一样可以直接用下面的答案 大工21秋<计算机网络技术>在线作业1 1 网络协议是通信双方必须遵守的事先约定好的规则,一个网络协议由语法.语义和 ( ) 三部分组 ...

  5. 中国医科大学21秋学期《药理学(本科)》实践考试试题

    中国医科大学21秋学期<药理学(本科)>实践考试试题 试卷总分:30 得分:30 一.单选题 (共 30 道试题,共 30 分) 1.最常引起直立性低血压的药物 A.贝那普利 B.吲达帕胺 ...

  6. 【python网络编程】创建TCP/UDP服务器进行客户端/服务器间通信

    客户端/服务器网络编程介绍 套接字:通信端点 实例:客户端发送数据,接收服务器返回的时间戳 用Python 编写FTP 客户端程序 客户端/服务器网络编程介绍 软件服务器也运行在一块硬件之上,但是没有 ...

  7. Linux网络编程 | Socket编程(一):Socket的介绍、UDPSocket的封装、UDP服务器/客户端的实现

    目录 套接字编程 Sockaddr结构 字节序 地址转换 常用套接字接口 UDP的通信流程 UDPSocket的封装 UDP服务器 UDP客户端 套接字编程 所谓套接字(Socket),就是对网络中不 ...

  8. 暑假规划及小学期总结

    总结 三个周小学期过去了(- - 妈蛋怎么有种写小学生日记的感觉),完成了两个项目,一个飞机大战,一个QT下编程. 飞机大战的编写过程真是日了狗了,以前学C++,吴振寰上课讲了一点MFC,让回来写程序 ...

  9. 【渝粤教育】21秋期末考试大数据营销10138k2

    21秋期末考试大数据营销10138k2 1.当前大数据技术的基础是由( )首先提出的.(1 分) A.阿里巴巴 B.百度 C.微软 D.谷歌 2.哪一项不是"互联网 +税务"行动基 ...

最新文章

  1. 串口 能 按位传输吗_六类网线能传输多少米?家装六类网线有必要吗?
  2. 第5周实践项目1 顺序栈建立的算法库
  3. JBoss EAP6/AS7/WildFly: How to Use Properties Files Outside Your Archive--reference
  4. python四种数值交换方法
  5. 使用JQuery实现延迟加载UserControl
  6. python中对比数组长度_在Python中检索数组长度的首选方法
  7. C语言中总是从main函数开始执行函数吗?
  8. 程序员技术测评平台,猿圈宣布获智联数千万 A+轮战略融资
  9. albert-chinese-ner使用预训练语言模型ALBERT做中文NER
  10. 微服务框架自带uuid生成器
  11. 学会这招,从此解决被知乎封号烦恼
  12. PHP最高权限的获取
  13. 第1关 Numpy创建数组 (educoder
  14. 中国房地产还能火多久?
  15. 自学计算机编程应该看些什么书
  16. PLSQL查询语句中日期格式使用不当会导致性能和效率很低
  17. ThinkCMF-smeta扩展字段
  18. 如何用matlab画烧杯,DLA模型的Matlab程序.doc
  19. 产品经理的战争:“产品已死 还是产品为王”?
  20. 10.JavaSE第10天_集合泛型

热门文章

  1. html中div的定位,html中div定位练习
  2. 新概念二册 Lesson 13 The Greenwood Boys绿林少年 (将来进行时)
  3. 创业型公司,你要不要去?
  4. 编解码学习笔记(三) Mpeg系列——Mpeg 1和Mpeg 2
  5. zookeeper的重连思考
  6. Puppet学习之hiera(8)
  7. 电源管理之pmu驱动分析
  8. sql server XML中value(),exists(),nodes()方法
  9. REPL----------------------什么是repl?以及如何理解
  10. 四旋翼的运动原理及几个飞行问题