首页 > 编程语言 >python写的收Udp消息后,再发到 MQTT 的例子

python写的收Udp消息后,再发到 MQTT 的例子

时间:2024-04-10 10:36:06浏览次数:16  
标签:Udp socket python sock mqtt MQTT client connect import

收到Udp消息后,再发到 MQTT 的例子

完整代码

udp2mqtt.py

import json
import logging
import random
import socket
import time
import paho.mqtt.client as mqtt_client

BROKER = '*******.ala.cn-hangzhou.emqxsl.cn'
PORT = 8084
TOPIC = "python-mqtt/wss"
CLIENT_ID = f'python-mqtt-wss-pub-{random.randint(0, 1000)}'
USERNAME = '********'
PASSWORD = '********'


UDP_IP = "localhost"  # 本地IP地址
UDP_PORT = 6789       # 本地端口号

FLAG_EXIT = False

def on_connect(client, userdata, flags, rc):
    if rc == 0 and client.is_connected():
        print("Connected to MQTT Broker!")
    else:
        print(f'Failed to connect, return code {rc}')

def connect_mqtt():
    client = mqtt_client.Client(client_id=CLIENT_ID, transport='websockets', callback_api_version=mqtt_client.CallbackAPIVersion.VERSION1)
    client.tls_set(ca_certs='./emqxsl-ca.crt')
    client.username_pw_set(USERNAME, PASSWORD)
    client.on_connect = on_connect
    client.connect(BROKER, PORT, keepalive=120)
    return client

def udp_server():
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.bind((UDP_IP, UDP_PORT))

    client = connect_mqtt()
    client.loop_start()

    while not FLAG_EXIT:
        data, addr = sock.recvfrom(1024)  # buffer size is 1024 bytes
        print(f"Received data from {addr}: {data}")
        if client.is_connected():
            client.publish(TOPIC, data)
        else:
            print("MQTT client is not connected. Cannot publish UDP data.")

    client.loop_stop()
    sock.close()

if __name__ == '__main__':
    logging.basicConfig(format='%(asctime)s - %(levelname)s: %(message)s', level=logging.DEBUG)
    udp_server()

 

发udp消息的例子

import socket

# 设置目标地址和端口
server_address = ('localhost', 6789)

# 创建UDP套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

try:
    # 发送数据
    message = 'aaaaaaa'
    print(f"发送:{message}")
    sent = sock.sendto(message.encode(), server_address)

finally:
    # 关闭套接字
    print("关闭套接字")
    sock.close()

 

标签:Udp,socket,python,sock,mqtt,MQTT,client,connect,import
From: https://www.cnblogs.com/hailexuexi/p/18125492

相关文章

  • Python异步HTTP客户端和服务器功能的底层库之httpcore使用详解
    概要httpcore库是一个提供异步HTTP客户端和服务器功能的底层库,它是许多高级HTTP客户端库的基础,如httpx。httpcore旨在提供一个快速、稳定且易于使用的HTTP组件。安装通过pip可以轻松安装httpcore:pip install httpcore特性异步支持:原生支持异步操作,提高I/O效率。......
  • Python快速构建Web API的利器库之Toapi使用详解
      概要Toapi模块是一个强大的Python库,可以帮助开发者快速构建WebAPI。通过Toapi,开发者可以轻松地将网页内容转换为API接口,实现数据的抓取和解析。本文将介绍Toapi模块的基本用法和功能,以及多种Python案例,帮助读者更好地理解和应用Toapi模块。Toapi模块的基本用法Toap......
  • Python中global和nonlocal关键字的妙用:变量管理技巧
        概要在Python中编写函数时,经常会遇到需要在函数内部访问和修改外部变量的情况。在这种情况下,我们可以使用 global 和 nonlocal 关键字来声明变量的作用域,以便正确地访问和修改这些变量。本文将深入探讨 global 和 nonlocal 的用法,包括详细的示例代码和......
  • python收发Udp消息
    发Udp消息udpSend.pyimportsocket#设置目标地址和端口server_address=('localhost',6789)#创建UDP套接字sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)try:#发送数据message='aaaaaaa'print(f"发送:{message}")se......
  • Python基于Excel数据加以反距离加权空间插值并掩膜图层
      本文介绍基于Python中ArcPy模块,实现Excel数据读取并生成矢量图层,同时进行IDW插值与批量掩膜的方法。1任务需求  首先,我们来明确一下本文所需实现的需求。  现有一个记录有北京市部分PM2.5浓度监测站点在2019年05月18日00时至23时(其中不含19时)等23个逐小时PM2.5浓度数......
  • Python的click库做命令行工作
    需求是MeterSphere测试计划状态是已完成/已结束,测试进度不是100%。排查发现是test_plan_test_case表中已取消关联的用例算在了测试用例总数导致的所以做了一个命令行工具方便其他人处理该问题pythonclick库常用函数详解_click函数-CSDN博客pythonClick库知识点汇总_python......
  • 肖sir__接口测试之python+rquest+unittest分层自动化框架
    接口测试之接口po框架一、新建一个项目  接口自动化框架设计实战:第一包:config  案例:#登录接口dl_url='http://cms.duoceshi.cn/cms/manage/loginJump.do'dl_d={'userAccount':'admin','loginPwd':'123456'}dl_h="Content-Type:applic......
  • python web 开发 - 基于flask框架的 Hello World 示例
    pythonweb开发-基于flask框架的HelloWorld示例文章目录pythonweb开发-基于flask框架的HelloWorld示例1、主要步骤2、flask安装3、创建程序4、运行程序5、通过浏览器访问1、主要步骤(1)安裝flask:pip3installflask(2)編寫並......
  • 【Python系列】Jupyter Notebook 中执行 Shell 脚本的方法
    ......
  • Day:004(3) | Python爬虫:高效数据抓取的编程技术(数据解析)
    BS4实战-人民网人民网_网上的人民日报(people.com.cn)http://www.people.com.cn/importrequestsfromfake_useragentimportUserAgentfrombs4importBeautifulSoupurl='http://www.people.com.cn/'headers={'User-Agent':UserAgent().chrome}#发送请求res......