Java发送TCP消息

Server端示例代码

这里建立一个端口号为9999的ServerSocket,等待客户端连接,在收到客户端消息时打印出消息:

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class TestTcpServer {
   
   
	
	public static void main(String[] args) {
   
   
		ServerSocket serverSocket = null;
		Socket socket = null;
		InputStream is = null;
		ByteArrayOutputStream baos = null;
		try {
   
   
			//建立服务器socket
			serverSocket = new ServerSocket(9999);		
			//等待客户端连接
			socket = serverSocket.accept();
			//读取客户端消息
			is = socket.getInputStream();
			//管道流
			baos = new ByteArrayOutputStream();
			byte[] buffer = new byte[1024
### 使用Java发送Modbus TCP请求 为了实现通过Java发送Modbus TCP请求的功能,可以采用开源库`jamod`来简化开发过程。下面展示了一个简单的例子,该实例展示了如何连接到一个模拟的Siemens S7-200 PLC设备并读取保持寄存器的数据[^1]。 ```java import net.wimpi.modbus.io.ModbusTCPTransaction; import net.wimpi.modbus.msg.ReadMultipleRegistersRequest; import net.wimpi.modbus.msg.ReadMultipleRegistersResponse; import net.wimpi.modbus.net.TCPMasterConnection; public class ModbusClientExample { public static void main(String[] args) { String ip = "192.168.1.10"; // Conpot IP 地址 int port = 502; // 默认MODBUS端口 try (TCPMasterConnection connection = new TCPMasterConnection(ip)) { connection.setPort(port); connection.connect(); ReadMultipleRegistersRequest request = new ReadMultipleRegistersRequest(0, 1); // 请求第一个地址的一个寄存器 ModbusTCPTransaction transaction = new ModbusTCPTransaction(connection); transaction.setRequest(request); transaction.execute(); ReadMultipleRegistersResponse response = (ReadMultipleRegistersResponse)transaction.getResponse(); System.out.println("Register Value: "+response.getShort(response.getMessage().getData()[1])); connection.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 这段代码实现了基本功能:创建与指定IP和端口号的目标服务器建立连接;构建用于查询特定范围内的多个连续寄存器值的消息对象;执行事务处理并将返回的结果打印出来。需要注意的是,在实际应用环境中应当考虑异常情况下的错误处理机制以及资源释放等问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值