python强势来袭-33-UDP编程实战

Linux 网络开发必学课程(七)UDP 数据收发实战、深入UDP 数据收发 UDP 数据收发实战① 再论UDP协议② UDP和IP的区别③ UDP数据收发④ UDP编程模式⑤ UDP数据收发⑥ 编程实验:UDP数据收发 阅读详情

见天来说说:

  • 什么是UDP协议
  • UDP网络编程——服务端程序开发
  • UDP网络编程——客户端程序开发

1.什么是UDP协议
回顾TCP协议:一个非常重要的数据传输协议,很多网络协议都是以TCP协议为基础的;TCP协议要求服务器和客户端通过三次握手交互的方式建立可靠的连接,然后再进行数据保温的发送,在发送过程中保证数据包的顺序和数量不会丢失,最后如果要断开连接需要四次挥手的方式进行连接的安全断开。

UDP协议:是一种用户数据报协议,是一种非连接的协议,传输数据之前服务端和客户端之间不建立连接,当进行数据传送时就将应用程序中的数据提取出来并放在网络上;
发送端发送数据,只是收到当前应用程序生成数据的速度、计算能力和传输带宽等因素的影响
接收端接收数据,UDP将消息放在一个消息队列中,应用程序从消息队列中读取消息

UDP特性:
1、传输数据不建立连接,不需要维护连接状态,同一个服务端可以向多个客户端广播发送消息
2、UDP数据包标题8个字节,TCP需要20个字节,额外开销较小
3、UDP是不可靠的传输协议,不保证所有的数据接收端完整并且正确的接收
4、UDP协议是面向报文的,发送端UDP直接将程序中的数据封装成报文交给IP层进行传输,所以需要我们在程序中处理好报文数据的大小

关于TCP和UDP那点事儿
1、基于连接和非连接
2、对系统资源的消耗多和少
3、TCP程序结构复杂、UDP程序结构简单明了
4、数据流模式的数据和数据报模式的数据
5、TCP是可靠的传输协议,UDP是不可靠的传输协议

2.UDP编程API简单了解
socket(family, type):用于表示网络连接的socket对象
family:socket.AF_INET用于表示使用IPv4地址
type:socket.SOCK_DGRAM表示使用数据报模式

s.bind((ip, port)):用于将套接字对象s和对应ip的主机及端口port绑定
注意:参数是一个元组

s.recvfrom(buffer):用于从socket中接收数据的方法
参数buffer:用于接收数据的缓冲区大小
返回值:得到客户端发送的消息和客户端的主机地址等信息

s.sendto(data, address):用于发送数据的方法
参数data:要发送的数据
参数address:数据发送的目的地地址

s.close()用于关闭套接字对象
使用完之后,一定要记得关闭网络套接字对象,释放系统资源哦

3. UDP服务端编程
和TCP网络编程一样,首先我们先开发服务端程序
服务端的程序开发步骤:首先创建表示网络传输的套接字对象socket();其次绑定对应的主机IP地址和端口号;接下来就可以进行消息的收发处理了;最后关闭套接字对象释放系统资源
在这里插入图片描述

    # 引入socket模块
    import socket
    
    # 创建socket对象
    sc = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    # 绑定主机端口
    sc.bind(("", 9999))
    
    # 开始收发消息
    data = True
    while data:
        # 接收客户端发送的消息
        data, addr = sc.recvfrom(1024)
        if "bye" == data.decode("UTF-8"):
            print("结束通话")
            break
        print("客户端发来消息:%s" % data.decode("UTF-8"))
    
        # 发送消息
        data = input("请输入要发送给客户端的消息:")
        sc.sendto(data.encode("UTF-8"), addr)
    
    # 关闭套接字对象
    sc.close()

**4. UDP客户端编程**
相对于服务端的编程,客户端编程非常简单,创建一个连接服务器的套接字对象,就可以直接进行数据收发处理了

![UDP客户端编程处理](https://img-blog.csdnimg.cn/20190822213839144.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3B5dGhvbl9kb3Jpcw==,size_16,color_FFFFFF,t_70)
```p
import socket
# 创建socket套接字对象
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 开始收发消息
data = input("请输入要发送给服务器的消息:")
while data:
    # 发送消息
    client.sendto(data.encode("UTF-8"), ("192.168.10.108", 9999))

    # 接收消息
    data, addr = client.recvfrom(2014)
    if "bye" == data.decode("UTF-8"):
        print("结束通话")
        break;
    print("服务器%s发来消息:%s" % (addr, data.decode("UTF-8")))
    data = input("请输入要发送给服务器的消息:")

# 关闭套接字对象
client.close()

运行上面的服务端程序和客户端程序,就可以实现服务端和客户端之间的数据通信了。和TCP不同的是,大家可以通过上面的程序进行测试,当服务端或者客户端一方的程序结束时,不会影响另一方的程序运行。

以上就是小编所分享的内容,喜欢的话可以加个关注,希望能够帮助到大家,仅供参考

最后针对Android程序员,除了以上内容,我自己整理了一套最新的python系统资料可以免费送给大家,从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。需要这些资料的朋友,可以进python学习交流群:851211580免费领取 。

希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!后续还会更新技术干货,谢谢您的支持!

Python项目案例开发从入门到实战源代码第14章 网络通讯案例——基于UDP的网络五子棋.rar 立即下载

相关推荐

基于udp的socket编程实例

自己用MFC对话框程序实现的基于UDP的socket编程示例,分为客户端和服务端,客户端发送一个字符串,服务端接收。代码简单明了,无论是学习还是拿到自己的项目中使用都很好。

网络通信篇上(udp实战开发)聊天器的开发两台电脑实现联通--socket模块的应用开发技术

网络通信:如今业界主流由udp通信和tcp通信,udp相对来说更加复杂一些,而tcp相对来说会更加的简单一些 我们首先先理解一下udp通信原理,和创建通信的必要步骤。 我们最常用的就是通过socket库来创建一个可运行的实现各主机之前收发文件。套接模板 import socket def run(): #创建udp套接字 s =socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #收发收据 #关闭套接字 s.close()

weixin_46900108的博客 1307

机器视觉/将HIK海康面阵相机连接Halcon软件

本文简述了如何将海康面阵相机连接到Halcon软件中进行实时取图的过程。

Dahe.qu 4866

我与python约个会:30.3. 企业级开发进阶2.3:UDP编程

本节内容如下 什么是UDP协议UDP网络编程——服务端程序开发UDP网络编程——客户端程序开发 1.什么是UDP协议 回顾TCP协议:一个非常重要的数据传输协议,很多网络协议都是以TCP协议为基础的;TCP协议要求服务器和客户端通过三次握手交互的方式建立可靠的连接,然后再进行数据保温的发送,在发送过程中保证数据包的顺序和数量不会丢失,最后如果要断开连接需要四次挥手的方式进行连接的

自由先锋 524

6G网络的关键技术、应用前景与挑战并存的科技征途

移动通信技术正以前所未有的速度迭代更新,而6G技术的研发进程渐渐成为了当前科技领域的热点。全球各国已纷纷将目光投向了充满想象的6G时代。本文将探讨全球6G技术研发的最新进展,以及6G技术的核心创新与潜在应用。

fiberroad的博客 2424

5种超实用方法:快速获取Windows文件夹下所有文件名(含CMD/PowerShell脚本)

本文详细介绍了5种快速获取Windows文件夹下所有文件名的实用方法,包括图形界面操作、Excel数据导入、CMD命令和PowerShell脚本。特别提供了高效的CMD和PowerShell脚本示例,帮助用户轻松实现文件名的批量获取与管理,大幅提升工作效率。

opencv7vision的博客 449

python3实战-udp协议的聊天室

首先说一下聊天室需要的技术:客户端-服务器模式的搭建tcp/udp协议的选择设计思路:    服务器接收客户端的登录(连接),然后接收客户端的消息,并根据消息内容选择回发对象。    服务器端先输入姓名作为登录的姓名,然后连接到服务器之后就可以发送给服务器,服务器进行处理。    选择通讯协议udp,因为这里是不需要三次握手四次挥手的过程,用udp就完全可以进行的,实现起来也比较简单。 问题点: ...

响神的博客 1914

Windows11 - Ubuntu 双系统及 ROS、ROS2 安装

在本教程中,我们将使用 Ubuntu 20.04 版本,该版本使用了新的 Ubuntu 桌面安装程序,该程序将包含在今后发布的所有 Ubuntu 版本中。如果你选择了这个选项,你会看到一个简单的界面,允许你选择要安装Ubuntu的硬盘,并通过滑块来决定你希望Ubuntu使用的磁盘空间大小。如果你的电脑有多个硬盘驱动器,那么只要它们各自有自己的驱动器,这个选项就能让你在安装 Ubuntu 的同时安装现有的操作系统。在此屏幕上,系统会提示您输入您的姓名和您的计算机名称,以显示在网络上。

机器人控制与仿真应用 4507

三面华为OD,根据录音整理的软件测试面试真题,你能答对几道?

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

2301_79535544的博客 864

Python 爬虫实战:在房天下抓取房产信息,分析房价走势

通过本次 Python 爬虫实战,我们成功地从房天下爬取了房产信息,并进行了存储、处理、分析和可视化展示。在这个过程中,我们不仅掌握了爬虫技术的基本应用,还学会了如何对动态加载的数据进行处理和分析。然而,本次爬虫任务也存在一些局限性,例如仅爬取了部分区域的房产数据,且未对房产的图片和视频内容进行分析。在未来的工作中,我们可以进一步优化爬虫程序,爬取更多区域的房产数据,并深入分析房产的多媒体内容、用户行为模式等,为购房者和房地产从业者提供更有价值的数据支持。

u014481728的博客 1367

【推荐100个unity插件】帮助你快速开发一款FPS游戏—— FPS Framework

FPS Framework 快速入门指南 FPS Framework 是一个 Unity 开发框架,可加速 FPS 游戏开发。主要功能包括: 第一人称控制器:基于 Character Controller 实现,提供移动、跳跃、下蹲等功能,支持自定义参数调整 渲染管线转换:内置 RP 转换器,支持 URP/HDRP 等渲染管线一键切换 库存系统: 采用双列表管理:物品列表(Items)和可收集物列表(Collectables) 支持自定义库存物品和可收集物类型 提供拾取/丢弃功能实现 快速开始: 通过预制件

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2569

三面华为BD,根据录音整理的软件测试面试真题

1、2、3、 公司人员组成4、 在工作中你认为自己是强势的人还是随和的人5、 了解公司6、 接受加班吗7、流程8、 上线验收是谁验收9、 Linux命令10、MySQL数据库11、编写会用到哪些方法12、怎样测试一个杯子/桌子/电梯13、开发不认为是缺陷,该怎么办14、如何做15、web测试和app测试的区别16、xxx模块的测试用例是怎么设计17、monkey测试18、项目做了多久19、测试报告是谁编写的?20、沟通能力。

2301_79535618的博客 194

Imagiq AI-PQ 图像质量增强模块详解:联发科 ISP 中的 AI 图像管线实战解析

随着智能手机影像系统对图像质量要求的持续提升,联发科在其 Imagiq ISP 中引入了 AI 驱动的图像增强模块——AI-PQ(AI-based Picture Quality),通过 AI 模型对亮度、色彩、噪声、锐度等多个维度进行动态调节与增强,实现更加智能化和个性化的图像输出效果。AI-PQ 在实际工程中已成为影响照片风格、视频观感和多模组一致性的核心能力之一。本文围绕 Imagiq 平台最新一代 AI-PQ 模块(2024-2025年量产平台为基础),结合实机开发与调优经验,深入剖析其各子模块的算

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1419

招商银行信用卡中心秋招IT笔试复盘:开发方向考点与备考策略

银行系统开发岗位的校招笔试往往涵盖行测、英语、专业知识和编程题多个模块,考察的是候选人的综合基础与快速切换能力。金融科技领域的招聘中,Java基础、数据库原理、计算机网络和算法是核心技术考点,而行测部分的逻辑推理与资料分析同样占据较大比重。以招商银行信用卡中心的开发方向笔试为例,其题库覆盖广、节奏紧凑,要求考生在各板块都有稳定的保底得分能力。备考时,应优先夯实Java集合与JVM、SQL事务与索引、TCP与HTTP状态码等高频知识,并通过在线OJ练习适应代码题的边界与复杂度要求。本文从笔试结构、各科要点到时

congji3817的博客 432

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

linux网络编程篇-TCP UDP编程实战

OSI七层网络模型: 1.物理层:通过硬件设备将模拟信号转换为数字信号,于是有了0/1的数据流,叫做bit流 2.数据链路层:可以发比特流但是没有格式就会乱七八糟,于是就有了”帧”。采用了一种”帧”的数据块进行传输,为了确保数据通信的准确,实现数 据有效的差错控制,加入了检错等功能 3.网络层:前两层都是在于可以发数据,以及发的数据是否正确,然而如果连着两台电脑还行,多台电脑而又只想让其中一台可以...

qq_33472414的博客 673

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Linux:UDP Socket编程(代码实战)

文章目录1. 网络字节序2. TCP、UDP的简单了解2.1 UDP协议2.2 TCP协议3. UDP的Socket编程3.1 编程的流程3.2 Socket的接口3.2.1 创建套接字 1. 网络字节序 ① 首先我们需要知道什么是字节序? 字节序就是CPU对内存数据的存取顺序 ② 其次,字节序中又分为大端字节序和小端字节序。 大端字节序就是数据的低位保存在高地址,高位保存在低地址。 小端字节序就是数据的低位保存在低地址,高位保存在高地址。 举个例子来看一下,现在有一个数据0x12345678。  

zw的博客 3481

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

udp通信简单实例

客户端: import java.io.*; import java.net.*; import java.util.Scanner; public class UDPClient{ public static void main(String[] args){ for(int i=1;i<5;i++){ client(); } } public static void cl

代码改变人生 987

Windows socket UDP开发实例

开发环境:vc++6.0 windows socket UDP开发函数介绍:   int recvfrom(SOCKET s,char FAR * buf,int len,int flags,struct sockaddr FAR * from,int FAR * fromlen); 说明: 1 SOCKET s:套接字 2 char FAR* buf:接受数据缓冲区 3 int len...

不积跬步无以至千里 1351

Django实战教程: 开发企业级应用智能文档管理系统smartdoc(3)附GitHub代码地址

本文是我们利用Django开发智能文档管理系统smartdoc的终章。对于智能文档管理,最不可或缺的功能就是搜索。在Django实战教程: 开发企业级应用智能文档管理系统smartdoc(1)里,我们已经搭好了基础框架,并具体实现了以下几个功能性页面(见标黄部分)。在第2部分教程里,我们讲解了不同用户的权限控制。本文将详细讲解开发最后一个功能性页面。 产品列表,产品详情,产品创建和产品修改 ...

大江狗 2213
上一篇: python强势来袭-32-网络编程-TCP实战
下一篇: python强势来袭-34-服务端快捷开发
python-花猫
博客等级 码龄7年 105粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值