【全民Python】 Python网络通信UDP消息收发处理

这篇具有很好参考价值的文章主要介绍了【全民Python】 Python网络通信UDP消息收发处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一.UDP介绍

二.UDP的使用方法

三.源码


一.UDP介绍

1. UDP的英文单词是User Datagram Protocol,缩写为UDP,是一种用户数据报协议,又称为用户数据报文协议,是一种报文的协议,是一个简单的面向数据报的传输层协议  。
2.UDP的发起和接受是不需要经过连接的,仅仅只需要发送在对应端口上进行监听接受即可,不需要两个客户端一定要建立连接才能进行通信 。
3.UDP的优点是速度快、开销小、实时性好,但是缺点是不可靠、容易丢包、无序到达。
4.UDP适用于对网络通讯质量要求不高的场景,比如QQ音视频传输、微信音视频传输等。
5.UDP是一种无连接的传输层协议,它可以实现简单的网络通讯,不需要建立连接就可以发送和接收数据。Python提供了socket模块来支持UDP通讯,可以使用socket.socket()函数创建一个UDP套接字对象,然后调用sendto()方法发送数据,调用recvfrom()方法接收数据

二.UDP的使用方法

1. 通过socket对象可以实现UDP通信的发送和接收功能。发送数据使用sendto()方法,接收数据使用recvfrom()方法 。
2.sendto()方法需要两个参数:要发送的数据(bytes类型)和目标地址(IP地址和端口号组成的元组) 。例如:sock.sendto(b'Hello', ('127.0.0.1', 8888))
3. recvfrom()方法需要一个参数:指定接收数据的最大字节数(int类型),返回值是一个元组:接收到的数据(bytes类型)和发送方地址(IP地址和端口号组成的元组) 。例如:data, addr = sock.recvfrom(1024)

三.源码

python udp接收数据,# 全民Python,python,udp

1.udp发送端

print("---------------------------------udp发送端------------------------------")

# 创建一个UDP套接字对象
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 定义目标主机和端口
host = "127.0.0.1"
port = 8888

# 发送消息
message = "Hello, UDP!"
udp_socket.sendto(message.encode(), (host, port))
print('发送消息:', message)
# 接收消息
data, addr = udp_socket.recvfrom(1024)
print("Received from %s: %s" % (addr, data.decode()))

# 关闭套接字
udp_socket.close()

2.接收端

接收消息并处理消息文章来源地址https://www.toymoban.com/news/detail-558191.html

# 导入模块
import socket
import threading
import queue
print("---------------------------------udp监听端------------------------------")
# 定义消息队列,用于存储生产者发送的数据和消费者接收的数据
msg_queue = queue.Queue()

# 定义生产者类,继承自threading.Thread
class Producer(threading.Thread):
    def __init__(self, name, host, port):
        # 调用父类的初始化方法
        super().__init__()
        # 设置线程名字
        self.name = name
        # 创建udp套接字对象
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        # 绑定主机和端口号
        self.sock.bind((host, port))

    def run(self):
        # 线程运行的方法,循环接收数据并放入消息队列中
        while True:
            # 接收数据,返回一个元组(data, address)
            data, address = self.sock.recvfrom(1024)
            # 将数据和地址封装成一个元组,放入消息队列中
            msg_queue.put((data.decode(), address))
            # 打印提示信息,显示生产者线程名字,发送方地址和数据内容
            print(f"{self.name} 接收 data from {address}: {data.decode()}")

# 定义消费者类,继承自threading.Thread


class Consumer(threading.Thread):
    def __init__(self, name):
        # 调用父类的初始化方法
        super().__init__()
        # 设置线程名字
        self.name = name

    def run(self):
        # 线程运行的方法,循环从消息队列中取出数据并处理
        while True:
            # 从消息队列中取出一个元素,返回一个元组(data, address)
            data, address = msg_queue.get()
            # 处理数据,这里简单地将数据转换成大写形式,并打印提示信息,显示消费者线程名字,接收方地址和处理后的数据内容
            data = data.upper()
            print(f"{self.name} 处理 data for {address}: {data}")


# 创建一个生产者对象,并设置线程名字为P1,监听本地主机的8888端口
p1 = Producer("P1", "localhost", 8888)
# 启动生产者线程
p1.start()

# 创建两个消费者对象,并设置线程名字为C1和C2
c1 = Consumer("C1")
c2 = Consumer("C2")
# 启动消费者线程
c1.start()
c2.start()

到了这里,关于【全民Python】 Python网络通信UDP消息收发处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity实现网络通信(UDP)

    UDP通信特点:         无连接,多对多         不可靠         面向数据报         效率高 UDP中的分包与黏包 分包:一段数据被分为两段或多段传输,在UDP通信方式中,因为UDP的不可靠性无法保证有序传输,因此尽量避免UDP自动分包。         其中一种方式是保证消

    2024年02月04日
    浏览(41)
  • 【Unity】网络通信(TCP&UDP)

    Unity/C#要想和其他电脑或者软件程序通讯,最好的方式是通过网络进行通讯,下面简要介绍以下其原理和实现: TCP和UDP是传输层协议,使用IP协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。 两者的不

    2024年01月16日
    浏览(69)
  • 网络通信(Socket/TCP/UDP)

    Socket(又叫套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接协议,客户端的IP地址,客户端的端口,服务器的IP地址,服务器的端口。 一个Socket是一对IP地址和端口。 Socket可以看

    2024年01月22日
    浏览(56)
  • C# 使用UDP进行网络通信

           在选择使用协议的时候,选择UDP必须要谨慎。在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重。但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即

    2024年02月12日
    浏览(41)
  • MFC网络通信-Udp服务端

    目录 1、UI的布局 2、代码的实现: (1)、自定义的子类CServerSocket (2)、重写OnReceive事件 (3)、在CUdpServerDlg类中处理 (4)、在OnInitDialog函数中 (5)、实现自定义函数ProcessPendingRead()处理接收到的数据 (6)、加入新客户的消息先进性判断是否位enter (7)、加入的新消息

    2024年02月05日
    浏览(37)
  • 【网络】socket——预备知识 | 套接字 | UDP网络通信

    🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言: 你只管努力,剩下的交给时间! 在前面本喵对网络的整体轮廓做了一个大概的介绍,比如分层,协议等等内容,现在我们直接进入socket(套接字)编程,先来感受到网络编程。 我们知道,在网络通信中,存在两套地址,一

    2024年02月13日
    浏览(54)
  • 【JavaEE】_基于UDP实现网络通信

    目录 1. 服务器 1.1 实现逻辑 1.2 代码 1.3 部分代码解释 2. 客户端 2.1 实现逻辑 2.2 代码 2.3 客户端部分代码解释 3. 程序运行结果 4. 服务器客户端交互逻辑 普通服务器:收到请求,根据请求计算响应,返回响应; 回显服务器:忽略计算,直接将收到的请求作为响应返回; (

    2024年01月21日
    浏览(42)
  • Linux网络编程(四)——UDP通信

    目录 0x01 UDP协议 一、UDP通信简介以及接口 二、UDP的接口 三、UDP收发例程 0x02 广播 一、设置广播数据函数接口 二、广播代码实现 0x03 组播(多播) 一、组播地址 二、设置组播函数接口 三、代码实现 UDP是一个面向无连接的,不可靠的服务,功能即为在IP的数据报服务之上增

    2024年02月12日
    浏览(46)
  • 基于UDP/TCP的网络通信编程实现

    红色是心中永不褪色的赤诚 操作系统为网络编程提供了 Socket api , Socket是基于TCP/IP协议的网络通信的基本单元, 基于Socket的网络程序开发就是 网络编程. 由于直接与应用层联系的是传输层, 所以针对应用层协议(TCP, UDP), Shocket提供了三种套接字, 分别是 流套接字(使用TCP) , 数据报

    2024年02月08日
    浏览(55)
  • 18 MFC TCP和UDP 网络通信

    有错误代码可以进行查找 将错误代码输入 勾选高级功能 如果没有勾选 TCP服务器 ui 设置 添加套接字类 创建虚函数接收连接 在服务器里面创建客户端类 在客户端类中添加接收的响应函数 断开连接 // TCPChatServerDlg.h: 头文件 // TCPChatServerDlg.cpp: 实现文件 //ClistenSocket.h //ClistenSo

    2024年02月14日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包