Modbus协议简介
在开始编码前,简单理解Modbus有助于更好地实现它。

-
Modbus 是一种串行通信协议,由Modicon公司(现为施耐德电气)于1979年发明,它是一种主从式协议。
-
主站:主动发起请求的设备,如PLC、SCADA服务器、我们的Java程序。
-
从站:被动响应请求的设备,如传感器、变频器、智能仪表等,每个从站都有一个唯一的地址 (Slave ID, 通常是1-247)。
-
功能码:主站通过功能码告诉从站要执行什么操作,最常用的功能码是:
(图片来源网络,侵删)0x01(Read Coils): 读取单个或多个线圈(开关量,0或1)。0x02(Read Discrete Inputs): 读取单个或多个离散输入(通常是外部开关的状态)。0x03(Read Holding Registers): 读取单个或多个保持寄存器(通常用于读写模拟量、配置参数)。0x04(Read Input Registers): 读取单个或多个输入寄存器(通常用于只读的模拟量,如传感器值)。0x05,0x06,0x0F,0x10: 用于写入单个/多个线圈/寄存器。
-
传输介质:Modbus可以通过多种物理介质传输:
- 串口 (RTU):使用RS-232, RS-485等,在相同波特率、数据位、停止位和校验位下,RTU模式比ASCII模式传输效率更高,抗干扰能力更强,是目前工业领域最主流的方式。
- TCP/IP (TCP):将Modbus报文封装在TCP报文中,通过以太网传输,这是现代自动化系统的首选,易于与现有IT网络集成。
Java Modbus库选择
Java生态中有几个成熟的库可以实现Modbus通信,这里推荐最主流的两个:
a. Jamod (Java Modbus Library)
- 特点:一个非常经典、轻量级的开源库,专门为Modbus设计,支持RTU和TCP模式。
- 优点:API相对简单,学习曲线平缓,非常适合初学者和小型项目。
- 缺点:维护频率不高,一些高级功能(如连接池、更强大的异步支持)不如其他库完善。
- Maven依赖:
<dependency> <groupId>com.ghgande</groupId> <artifactId>j2mod</artifactId> <version>3.2.1</version> </dependency>注意:
j2mod是jamod的一个积极维护的分支,现在更推荐使用j2mod。
b. Eclipse Milos (基于Netty)
- 特点:一个功能更强大、性能更高的现代化Modbus库,它基于高性能的网络框架Netty构建。
- 优点:
- 高性能:异步非阻塞I/O,适合需要处理大量并发连接或高频数据采集的场景。
- 功能全面:支持RTU over TCP, RTU Serial, TCP等多种模式,功能丰富。
- 活跃维护:由Eclipse基金会维护,社区活跃。
- 缺点:API相对复杂,学习成本稍高。
- Maven依赖:
<dependency> <groupId>org.eclipse.milo</groupId> <artifactId>stack-core</artifactId> <version>0.6.7</version> </dependency> <dependency> <groupId>org.eclipse.milo</groupId> <artifactId>stack-client</artifactId> <version>0.6.7</version> </dependency> <dependency> <groupId>org.eclipse.milo</groupId> <artifactId>server-core</artifactId> <version>0.6.7</version> </dependency> <dependency> <groupId>org.eclipse.milo</groupId> <artifactId>server-tcp</artifactId> <version>0.6.7</version> </dependency> <dependency> <groupId>org.eclipse.milo</groupId> <artifactId>server-serial</artifactId> <version>0.6.7</version> </dependency>
实践示例:使用 Jamod (j2mod) 进行数据采集
我们先用 j2mod 实现一个简单的客户端,分别从Modbus TCP和Modbus RTU设备读取数据。

a. Modbus TCP 读取 (功能码 0x03)
假设有一个Modbus TCP设备,IP为 168.1.10,端口为 502,从站地址为 1,我们要读取保持寄存器地址 0 开始的10个寄存器。
import com.ghgande.j2mod.modbus.Modbus;
import com.ghgande.j2mod.modbus.io.ModbusTCPTransaction;
import com.ghgande.j2mod.modbus.msg.ReadMultipleRegistersRequest;
import com.ghgande.j2mod.modbus.msg.ReadMultipleRegistersResponse;
import com.ghgande.j2mod.modbus.net.TCPMasterConnection;
import java.net.InetAddress;
public class JamodTcpExample {
public static void main(String[] args) {
String ipAddress = "192.168.1.10"; // Modbus TCP设备的IP
int port = Modbus.DEFAULT_PORT; // Modbus TCP默认端口502
int slaveId = 1; // 从站地址
int startAddr = 0; // 起始寄存器地址
int numRegs = 10; // 读取的寄存器数量
TCPMasterConnection connection = null;
ModbusTCPTransaction transaction = null;
try {
// 1. 创建TCP连接
InetAddress addr = InetAddress.getByName(ipAddress);
connection = new TCPMasterConnection(addr);
connection.setPort(port);
connection.connect(); // 建立连接
// 2. 创建请求
ReadMultipleRegistersRequest request = new ReadMultipleRegistersRequest(startAddr, numRegs);
request.setUnitID(slaveId); // 设置从站地址
// 3. 创建事务
transaction = new ModbusTCPTransaction(connection);
transaction.setRequest(request);
transaction.setReconnecting(true); // 设置为重连模式,连接断开会尝试重连
// 4. 执行事务(同步发送请求并等待响应)
System.out.println("Sending request to " + ipAddress + ", slave " + slaveId);
transaction.execute();
// 5. 处理响应
ReadMultipleRegistersResponse response = (ReadMultipleRegistersResponse) transaction.getResponse();
if (response.isException()) {
System.err.println("Received exception response: " + response.getExceptionCode());
} else {
System.out.println("Successfully read " + response.getWordCount() + " registers.");
// 打印读取到的寄存器值
for (int i = 0; i < response.getWordCount(); i++) {
System.out.println("Register [" + (startAddr + i) + "] = " + response.getRegisterValue(i));
}
}
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
e.printStackTrace();
} finally {
// 6. 关闭连接
if (connection != null && connection.isConnected()) {
connection.close();
}
}
}
}
b. Modbus RTU 读取 (功能码 0x03)
假设有一个Modbus RTU设备连接在串口 COM3 (Windows) 或 /dev/ttyUSB0 (Linux) 上,波特率 9600,从站地址 1。
import com.ghgande.j2mod.modbus.Modbus;
import com.ghgande.j2mod.modbus.io.ModbusSerialTransaction;
import com.ghgande.j2mod.modbus.msg.ReadMultipleRegistersRequest;
import com.ghgande.j2mod.modbus.msg.ReadMultipleRegistersResponse;
import com.ghgande.j2mod.modbus.net.SerialConnection;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import java.util.Enumeration;
public class JamodRtuExample {
public static void main(String[] args) {
String portName = "COM3"; // Windows: "COM3", Linux: "/dev/ttyUSB0"
int baudRate = 9600;
int dataBits = SerialPort.DATABITS_8;
int stopBits = SerialPort.STOPBITS_1;
int parity = SerialPort.PARITY_NONE;
int slaveId = 1;
int startAddr = 0;
int numRegs = 10;
SerialConnection connection = null;
ModbusSerialTransaction transaction = null;
try {
// 1. 获取串口标识符
Enumeration<CommPortIdentifier> portList = CommPortIdentifier.getPortIdentifiers();
CommPortIdentifier portId = null;
while (portList.hasMoreElements()) {
CommPortIdentifier currentPortId = portList.nextElement();
if (currentPortId.getName().equals(portName)) {
portId = currentPortId;
break;
}
}
if (portId == null) {
throw new Exception("Port " + portName + " not found.");
}
// 2. 打开串口
connection = new SerialConnection(portId);
connection.setSerialPortParams(baudRate, dataBits, stopBits, parity);
connection.open();
// 3. 创建请求
ReadMultipleRegistersRequest request = new ReadMultipleRegistersRequest(startAddr, numRegs);
request.setUnitID(slaveId);
// 4. 创建事务
transaction = new ModbusSerialTransaction(connection);
transaction.setRequest(request);
// 5. 执行事务
System.out.println("Sending request to " + portName + ", slave " + slaveId);
transaction.execute();
// 6. 处理响应
ReadMultipleRegistersResponse response = (ReadMultipleRegistersResponse) transaction.getResponse();
if (response.isException()) {
System.err.println("Received exception response: " + response.getExceptionCode());
} else {
System.out.println("Successfully read " + response.getWordCount() + " registers.");
for (int i = 0; i < response.getWordCount(); i++) {
System.out.println("Register [" + (startAddr + i) + "] = " + response.getRegisterValue(i));
}
}
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
e.printStackTrace();
} finally {
// 7. 关闭连接
if (connection != null) {
connection.close();
}
}
}
}
注意:使用RTU需要 gnu.io (RXTX) 库,你需要下载对应你操作系统的 .dll 或 .so 文件,并将其放在Java的 library path 中(System.setProperty("java.library.path", "path_to_rxtx_bin");),这通常是RTU开发中最容易出错的地方。
实践示例:使用 Eclipse Milo 进行数据采集
Milo的API更面向对象,但概念类似,我们同样实现一个TCP读取的例子。
a. Modbus TCP 读取 (功能码 0x03)
import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue; import org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode; import org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UShort; import org.eclipse.milo.opcua.stack.core.types.enumerated.TimestampsToReturn; import org.eclipse.milo.opcua.stack.core.util.Unit; import org.eclipse.milo.opcua.stack.server.transport.tcp.UaTcpStackServer; import org.eclipse.milo.opcua.stack.server.transport.tcp.UaTcpStackServerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServer; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransport; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManager; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerConfig; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListener; import org.eclipse.milo.opcua.stack.server.transport.tcp.nio.NioUaTcpStackServerTransportManagerListenerAdapter; import org.eclipse
