当前位置: 首页 > news >正文

网站关键词的写法广州番禺网站制作推广

网站关键词的写法,广州番禺网站制作推广,网站建设的盈利模式,黄石企业做网站博主最近的项目对接了部分硬件设备,其中有的设备只支持tcp长连接方式传输数据,博主项目系统平台作为客户端发起tcp请求到设备,设备接收到请求后作为服务端保持连接并持续发送数据到系统平台。 1.依赖引入 连接使用了netty,如果项…

博主最近的项目对接了部分硬件设备,其中有的设备只支持tcp长连接方式传输数据,博主项目系统平台作为客户端发起tcp请求到设备,设备接收到请求后作为服务端保持连接并持续发送数据到系统平台。

1.依赖引入

连接使用了netty,如果项目中没有就先引入:

<dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.69.Final</version>
</dependency>

2.创建客户端

import io.netty.bootstrap.Bootstrap;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioSocketChannel;
import io.netty.handler.codec.DelimiterBasedFrameDecoder;
import lombok.extern.slf4j.Slf4j;import java.nio.charset.StandardCharsets;/*** @author GBX* @description tcp长连接客户端* @date 2024/5/29 15:11*/
@Slf4j
public class NettyTcpClient {private final Bootstrap bootstrap;private final EventLoopGroup group;private Channel channel;public NettyTcpClient(String host, int port) {group = new NioEventLoopGroup();bootstrap = new Bootstrap();bootstrap.group(group).channel(NioSocketChannel.class).handler(new ChannelInitializer<SocketChannel>() {@Overridepublic void initChannel(SocketChannel ch) throws Exception {ChannelPipeline pipeline = ch.pipeline();//添加自定义结束规则pipeline.addLast(new DelimiterBasedFrameDecoder(1024, ByteBufAllocator.DEFAULT.buffer().writeBytes("|".getBytes(StandardCharsets.UTF_8))));//添加自定义消息处理器pipeline.addLast(new TcpClientHandler());}});try {channel = bootstrap.connect(host, port).sync().channel();log.info("NettyTcpClient ===》 success");} catch (Exception e) {log.error("NettyTcpClient-发生异常, 信息:", e);}}public void close() {if (channel != null) {channel.close();}group.shutdownGracefully();}public static class TcpClientHandler extends SimpleChannelInboundHandler<ByteBuf> {@Overrideprotected void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) throws Exception {//处理接收到的数据System.out.println("Received data ===>: " + msg.toString(StandardCharsets.UTF_8));}@Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {cause.printStackTrace();ctx.close();}}
}

如上代码中所示,博主使用了 “|” 作为结束符,使用结束符可以有效地解决tcp数据读取的粘包 半包问题。

3.设置配置类以进行自启动

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @author GBX* @description tcp长连接配置类* @date 2024/5/29 15:14*/
@Configuration
public class NettyClientConfig {@Bean(destroyMethod = "close")public NettyTcpClient nettyTcpClient() {NettyTcpClient client = new NettyTcpClient("127.0.0.1", 4001);// 启动客户端连接return client;}
}

4.效果测试

启动项目,发现客户端连接远程成功:

远程服务器端,这里使用的是 NetAssist 工具进行模拟(注意:该工具在springboot项目启动前已经提前启动了服务器模式进行了端口监听,可以看到项目启动后进来一个连接):

如上图所示,在8 和 10 后分别由一个结尾符,在工具上发送数据:

在springboot控制台可以看到打印的信息为两条:

工具可以在网盘下载:

链接: https://pan.baidu.com/s/1UccmnEL4VktHTHL7P_2V_g?pwd=6fcw 提取码: 6fcw

http://www.yayakq.cn/news/488130/

相关文章:

  • 海外贸易网站建设酒店网站ppt
  • 大连网站优化多少钱基于html的个人网站的设计与实现论文
  • 网站建设名词解释与简答题wordpress广告公司模板
  • 莆田市的网站建设公司信誉好的徐州网站建设
  • 中国交通建设集团官方网站徐州网约车公司哪家好
  • 帮做动态头像的网站网站建设7
  • mvc做的网站如何发布访问微信php网站开发流程图
  • 网站建设培训内容flash 网站 模板
  • 怎么查看网站是否做静态化处理上海建筑设计公司排名前20
  • 网站后台添加内容网页不显示福建网站备案
  • 电信网站备案西安app开发公司排名
  • 医疗电子网站建设免费域名怎么申请
  • 投诉举报网站建设要求麻阳住房和城乡建设局网站
  • 陕西公路工程建设有限公司网站淘宝网站怎么做会话保持的
  • 企业网站建设的基本原则网上有哪些网站做兼职
  • 电子商务网站的建设的原理东莞做营销型网站的
  • 上海杨浦区网站建设网站能搜索到
  • 广州网站建设商城网站结构有哪几种
  • wordpress文章换行广西优化网站 优帮云
  • 个人网站开发的背景乌海网站建设
  • 温州住房建设网站网页素材免费下载
  • 做模板网站乐云seo效果好商城网站如何做
  • 交互型网站网架结构厂家电话
  • 优惠建设网站网站建设和维护pdf
  • 湘潭做网站问下磐石网络WordPress安装aplayer
  • 单页网站制作需要多少钱建筑业服务平台
  • 福建省建设资格注册中心网站php网站建设的几个流程
  • html5开发的网站网站seo怎样做
  • 苏宁易购网站建设分析网站建设开发公司地址
  • 自己的网站怎么编辑北京东城区做网站的公司