python UDP(udp)协议发送和接收的实例

yizhihongxing

下面是详细的攻略:

1. 简介

UDP(用户数据报协议)是一种面向无连接的传输协议,可以在不建立连接的情况下直接发送和接收数据,通信效率高,但不保证数据传输的可靠性。在Python中可以使用socket模块来实现UDP协议的发送和接收操作。

2. 发送数据

UDP发送数据分为以下几个步骤:

2.1 创建socket对象

import socket

udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

2.2 绑定端口(可选)

如果需要手动绑定端口,可以使用bind()方法:

udp_socket.bind(('192.168.1.100', 8888))

其中('192.168.1.100', 8888)表示服务器IP地址和端口号。

2.3 发送数据

使用sendto()方法发送数据,该方法需要传入两个参数:发送的数据和目标地址(包括IP地址和端口号)。

data = b'Hello, UDP!'    # 发送的数据,必须为bytes类型
dest_addr = ('192.168.1.200', 8888)    # 目标地址

udp_socket.sendto(data, dest_addr)

2.4 关闭socket

发送数据完成后一定要关闭socket,释放资源。

udp_socket.close()

以下是完整的UDP发送数据示例代码:

import socket

udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)   # 创建socket对象

# udp_socket.bind(('192.168.1.100', 8888))    # 绑定端口,可选

data = b'Hello, UDP!'    # 发送的数据,必须为bytes类型
dest_addr = ('192.168.1.200', 8888)    # 目标地址

udp_socket.sendto(data, dest_addr)    # 发送数据

udp_socket.close()    # 关闭socket

3. 接收数据

UDP接收数据的流程如下:

3.1 创建socket对象

import socket

udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

3.2 绑定端口

需要绑定端口来监听数据:

udp_socket.bind(('192.168.1.100', 8888))

3.3 接收数据

使用recvfrom()方法接收数据,该方法返回一个元组,包含接收到的数据和发送方的地址。

buf_size = 1024    # 缓冲区大小
data, remote_addr = udp_socket.recvfrom(buf_size)

3.4 关闭socket

接收数据完成后一定要关闭socket,释放资源。

udp_socket.close()

以下是一个完整的UDP接收数据示例代码:

import socket

udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)    # 创建socket对象
udp_socket.bind(('192.168.1.100', 8888))    # 绑定端口

buf_size = 1024    # 缓冲区大小
data, remote_addr = udp_socket.recvfrom(buf_size)    # 接收数据
print(f'Received data: {data} from {remote_addr}')

udp_socket.close()    # 关闭socket

4. 示例说明

示例1:UDP发送数据

在本示例中,我们通过UDP协议向目标地址发送一条消息,然后输出发送的数据。

import socket

udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)   # 创建socket对象

data = b'Hello, UDP!'    # 发送的数据,必须为bytes类型
dest_addr = ('127.0.0.1', 8888)    # 目标地址

udp_socket.sendto(data, dest_addr)    # 发送数据

print(f'Sent data: {data}')

udp_socket.close()    # 关闭socket

输出结果:

Sent data: b'Hello, UDP!'

示例2:UDP接收数据

在本示例中,我们使用UDP协议监听指定端口的数据,并输出接收到的数据和发送方的地址。

import socket

udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)    # 创建socket对象
udp_socket.bind(('127.0.0.1', 8888))    # 绑定端口

buf_size = 1024    # 缓冲区大小
data, remote_addr = udp_socket.recvfrom(buf_size)    # 接收数据
print(f'Received data: {data} from {remote_addr}')

udp_socket.close()    # 关闭socket

执行结果:

Received data: b'Hello, UDP!' from ('127.0.0.1', 65058)

注意,发送方的地址和端口号是随机生成的,每次执行都可能不同。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python UDP(udp)协议发送和接收的实例 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 文卓爷模拟器打开报错等常见问题及其解决办法

    文卓爷模拟器打开报错等常见问题及其解决办法 文卓爷模拟器是一款功能强大的模拟器,但在使用过程中也有可能会出现一些问题,下面我们来看下常见问题及其解决办法。 1. 模拟器无法正常启动 问题描述 启动文卓爷模拟器时,出现错误提示,可能是黑屏、闪退等。 解决办法 点击电脑桌面上的“文卓爷模拟器”图标,并右键以管理员身份运行; 检查电脑是否联网,可能需要更新模拟器版…

    other 2023年6月27日
    00
  • 20佳惊艳的HTML5应用程序示例分享

    针对“20佳惊艳的HTML5应用程序示例分享”,可以提供以下完整攻略: 20佳惊艳的HTML5应用程序示例分享攻略 简介 HTML5技术的出现,让前端开发者可以使用更多的标签和API,实现更加灵活、丰富、高效的应用程序。以下是20个惊艳的HTML5应用程序示例,这些示例包括HTML5游戏、音视频播放器、数据可视化等多种类型。 20佳HTML5应用程序示例列表…

    other 2023年6月25日
    00
  • RecyclerView优雅实现复杂列表布局

    RecyclerView优雅实现复杂列表布局攻略 介绍 RecyclerView是Android开发中常用的控件,用于展示大量数据的列表布局。它提供了高度的灵活性和性能优化,使得实现复杂列表布局变得更加简单和高效。 本攻略将详细介绍如何使用RecyclerView来实现复杂列表布局,并提供两个示例说明。 步骤 步骤一:添加RecyclerView依赖 首先,…

    other 2023年8月21日
    00
  • 苹果发布macOS Catalina 10.15.3最新开发者测试版

    苹果发布了macOS Catalina 10.15.3的最新开发者测试版,让广大开发者可以提前体验并测试新版本。 要安装macOS Catalina 10.15.3最新开发者测试版,你可以按照以下步骤进行: 步骤一:申请开发者账号 在安装macOS Catalina 10.15.3最新开发者测试版之前,你需要先申请一个开发者账号。 示例说明: 如果你是开发者…

    other 2023年6月26日
    00
  • gho是什么文件格式?.gho文件怎么打开?

    GHO文件格式是什么? GHO文件格式是由Symantec Ghost软件创建的一种磁盘映像文件格式。它是一种备份和还原磁盘的文件格式,常用于系统克隆、恢复和部署。GHO文件包含了整个磁盘的扇区数据,包括操作系统、应用程序、文件和文件系统的结构。 如何打开GHO文件? 要打开GHO文件,您需要使用Symantec Ghost软件或其他兼容的磁盘映像软件。以下…

    other 2023年8月6日
    00
  • Apex英雄更新卡97%及下载卡住解决方法分享

    Apex英雄更新卡97%及下载卡住解决方法分享 如果你在更新Apex英雄时遇到了卡在97%的情况或者是下载进度卡住不动,那么可以尝试以下方法来解决: 解决方法一:清空缓存 关闭Apex英雄游戏。 在电脑的文件管理器中找到存放游戏缓存的目录,一般为:C:\Users\你的用户名\Saved Games\Respawn\Apex\local。 删除该目录下的所有…

    other 2023年6月27日
    00
  • qq聊天记录文件在哪里

    下面是针对 “qq聊天记录文件在哪里”的攻略: 查找QQ聊天记录文件 QQ聊天记录文件的默认保存位置是在用户目录下的“我的文档”文件夹中的“Tencent Files”文件夹,具体路径为: C:\Users\你的用户名\Documents\Tencent Files 在 Tencent Files 文件夹中,可以找到和 QQ 号码相关的文件夹,每个文件夹中都…

    其他 2023年4月16日
    00
  • C语言宏定义结合全局变量的方法实现单片机串口透传模式

    c\\”, receivedData); // 清空全局变量 receivedData = ‘\\0’; } } } 在上述示例中,当接收到数据时,宏定义`STORE_DATA`会将数据存储到全局变量`receivedData`中。在主函数中,我们通过检查全局变量是否为空来判断是否有新数据接收,然后将接收到的数据打印到串口。 #### 示例2:将接收到的数据…

    other 2023年7月29日
    00
合作推广
合作推广
分享本页
返回顶部