SocketTool、串口调试助手、MQTT中间件基础
目录一、SocketTool二、串口通信三、MQTT中间件一、SocketTool1、TCP 通信测试1创建 TCP Server2创建 TCP Client连接 Socket4数据收发在TCP Server发送数据12345在 TCP Client 端的 Socket 即可收到数据123452. UDP 通信测试1分别创建 UDP Server 和 UDP Client2先由 UDP Client 发送数据UDP Servers 收到数据才能看到对方端口在 UDP Server 收到过 UDP Client 的数据后,其对方 IP 地址和 UDP 端口均可确定 下来,然后 UDP Server 也可以向 UDP Client 发送数据了二、串口通信先创建两个虚拟串口这里用到了Configure Virtual Serial Port Driver然后打开串口调试工具调整串口设置后打开串口COM2接着在代码里开启另一个串口CMO1import com.fazecast.jSerialComm.SerialPort; import java.util.Scanner; public class SerialCommunicationExample { public static void main(String[] args) { // 尝试打开 COM1 端口你可以根据需要修改这个值 SerialPort serialPort SerialPort.getCommPort(COM1); if (serialPort.openPort()) { try { // 设置串口参数这些值应与你的设备匹配 serialPort.setComPortParameters(9600, 8, 1, SerialPort.NO_PARITY); serialPort.setComPortTimeouts(SerialPort.TIMEOUT_READ_SEMI_BLOCKING, 2000, 0); // 获取用户输入的消息 Scanner scanner new Scanner(System.in); System.out.print(Enter message to send: ); String messageToSend scanner.nextLine(); // 发送消息 serialPort.writeBytes(messageToSend.getBytes(), messageToSend.length()); // 等待接收到回复注意这里可能需要更复杂的逻辑来处理接收数据 byte[] buffer new byte[1024]; int numRead; StringBuilder receivedMessage new StringBuilder(); while ((numRead serialPort.readBytes(buffer, buffer.length)) 0) { receivedMessage.append(new String(buffer, 0, numRead)); } System.out.println(Received message: receivedMessage); } catch (Exception ex) { System.out.println(Error: ex.getMessage()); } finally { // 关闭串口 if (serialPort.isOpen()) { serialPort.closePort(); } } } else { System.out.println(Error: Could not open the serial port.); } } }在串口工具COM2发送数据COM1能收到COM1发送的在工具里也能接收到三、MQTT中间件先启动mqtt服务然后订阅和推送import org.eclipse.paho.client.mqttv3.*; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; public class SubscribeSample { public static void main(String[] args) { String broker tcp://localhost:1883; String topic mqtt/test; String username emqx; String password public; String clientid subscribe_client; int qos 0; try { MqttClient client new MqttClient(broker, clientid, new MemoryPersistence()); // 连接参数 MqttConnectOptions options new MqttConnectOptions(); // options.setUserName(username); // options.setPassword(password.toCharArray()); options.setConnectionTimeout(60); options.setKeepAliveInterval(60); // 设置回调 client.setCallback(new MqttCallback() { public void connectionLost(Throwable cause) { System.out.println(connectionLost: cause.getMessage()); } public void messageArrived(String topic, MqttMessage message) { System.out.println(topic: topic); System.out.println(Qos: message.getQos()); System.out.println(message content: new String(message.getPayload())); } public void deliveryComplete(IMqttDeliveryToken token) { System.out.println(deliveryComplete--------- token.isComplete()); } }); client.connect(options); client.subscribe(topic, qos); } catch (Exception e) { e.printStackTrace(); } } } import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; public class PublishSample { public static void main(String[] args) { String broker tcp://localhost:1883; String topic mqtt/test; String username emqx; String password public; String clientid publish_client; String content Hello MQTT; int qos 0; try { MqttClient client new MqttClient(broker, clientid, new MemoryPersistence()); // 连接参数 MqttConnectOptions options new MqttConnectOptions(); // 设置用户名和密码 // options.setUserName(username); // options.setPassword(password.toCharArray()); options.setConnectionTimeout(60); options.setKeepAliveInterval(60); // 连接 client.connect(options); // 创建消息并设置 QoS MqttMessage message new MqttMessage(content.getBytes()); message.setQos(qos); // 发布消息 client.publish(topic, message); System.out.println(Message published); System.out.println(topic: topic); System.out.println(message content: content); // 关闭连接 client.disconnect(); // 关闭客户端 client.close(); } catch (MqttException e) { throw new RuntimeException(e); } } }

相关新闻

Flutter 三方库 random_user_agents 的鸿蒙化适配指南 - 掌控 UA 资产、精密 User-Agent 治理实战、鸿蒙级伪装专家

Flutter 三方库 random_user_agents 的鸿蒙化适配指南 - 掌控 UA 资产、精密 User-Agent 治理实战、鸿蒙级伪装专家

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net Flutter 三方库 random_user_agents 的鸿蒙化适配指南 - 掌控 UA 资产、精密 User-Agent 治理实战、鸿蒙级伪装专家 在鸿蒙跨平台应用执行高级请求头管理与多维度 User-Agent 资产指控&…

2026/7/4 23:49:03 阅读更多 →
六辊轧机辊系CAD图纸

六辊轧机辊系CAD图纸

六辊轧机辊系CAD图纸是金属板材轧制工艺中关键环节的设计依据,其核心作用在于通过精确的几何模型与装配关系,定义支撑辊、中间辊及工作辊的相对位置、接触形式与运动逻辑。作为轧机机械结构的核心组成部分,辊系设计直接影响轧制力传递效率、板…

2026/5/17 9:32:53 阅读更多 →
《解锁 C++ 基础密码:输入输出、缺省参数,函数重载与引用的精髓》

《解锁 C++ 基础密码:输入输出、缺省参数,函数重载与引用的精髓》

一.C的输入和输出关键要点&#xff1a;<iostream> 是 Input Output Stream 的缩写&#xff0c;是标准的输⼊、输出流库&#xff0c;定义了标准的输入、输出对象。std::cin 是 istream 类的对象&#xff0c;它主要面向窄字符&#xff08;narrow characters (of type char)…

2026/7/3 22:36:48 阅读更多 →

最新新闻

深入理解Go语言内存模型与优化

深入理解Go语言内存模型与优化

深入理解Go语言内存模型与优化Go语言以其简洁的语法、强大的并发模型和出色的性能&#xff0c;在现代软件开发中占据了重要地位。然而&#xff0c;要真正释放Go程序的潜力&#xff0c;开发者必须深入理解其内存模型&#xff0c;并掌握相关的优化技巧。Go的内存管理虽然由垃圾回…

2026/7/6 1:05:31 阅读更多 →
松下伺服电子齿轮比计算:从脉冲当量到参数设置的 3 个实战案例

松下伺服电子齿轮比计算:从脉冲当量到参数设置的 3 个实战案例

松下伺服电子齿轮比实战指南&#xff1a;从脉冲当量到参数设置的深度解析在工业自动化领域&#xff0c;伺服系统的精度控制一直是工程师们关注的核心问题。作为松下伺服系统的关键参数之一&#xff0c;电子齿轮比的正确设置直接关系到设备的运动精度和响应速度。本文将从一个全…

2026/7/6 1:05:31 阅读更多 →
V4L2 零拷贝与内存分配机制

V4L2 零拷贝与内存分配机制

在 Linux 嵌入式多媒体与 AI 边缘计算&#xff08;如 RK3588 平台&#xff09;中&#xff0c;为了实现极低延迟和降低 CPU 占用&#xff0c;通常需要打通摄像头&#xff08;Camera&#xff09;、图像格式转换模块&#xff08;RGA/GPU&#xff09;、AI 加速器&#xff08;NPU&am…

2026/7/6 1:01:30 阅读更多 →
KYC形同虚设?揭秘黑产绕过金融机构身份核验全套手法

KYC形同虚设?揭秘黑产绕过金融机构身份核验全套手法

KYC&#xff08;Know Your Customer&#xff0c;了解你的客户&#xff09;并非信贷行业的专属课题&#xff0c;而是数字经济时代每一个需要建立"信任关系"的商业场景所共有的核心命题。无论是金融、电商、出行还是短视频&#xff0c;当平台试图确认"站在对面的究…

2026/7/6 1:01:30 阅读更多 →
Agentic Testing实战:自主AI测试代理架构与实现

Agentic Testing实战:自主AI测试代理架构与实现

# Agentic Testing实战&#xff1a;自主AI测试代理架构与实现## 一、背景与挑战&#xff1a;传统测试自动化的天花板当CI/CD流水线每天触发数百次测试执行&#xff0c;当微服务架构的API变更频率以分钟计&#xff0c;传统基于录制回放或关键字驱动的测试框架逐渐暴露出结构性缺…

2026/7/6 1:01:30 阅读更多 →
Windows上的安卓应用安装神器:APK安装器完整指南

Windows上的安卓应用安装神器:APK安装器完整指南

Windows上的安卓应用安装神器&#xff1a;APK安装器完整指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上轻松安装安卓应用吗&#xff1f;APK安装…

2026/7/6 0:59:29 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性&#xff1a;5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域&#xff0c;单元测试是保证代码质量的重要环节。当应用涉及数据库操作时&#xff0c;测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南&#xff1a;用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南&#xff1a;告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况&#xff1a;下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools&#xff1a;5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里&#xff0c;参与了关于混合后量子密码学的讨论&#xff0c;应付端点攻击找茬的人&#xff0c;还参与留言板讨论后&#xff0c;发现“威胁模型”对多数人仍是陌生概念&#xff0c;且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”&#xff1a;我理解的渗透测试到底是什么&#xff1f;每次看到新闻里说某个大公司的数据被“黑”了&#xff0c;或者某个网站被攻击导致服务瘫痪&#xff0c;你是不是和我一样&#xff0c;心里会冒出两个念头&#xff1a;一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻