目录一、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); } } }