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

网站如何做防劫持日本和韩国是亚洲的国家

网站如何做防劫持,日本和韩国是亚洲的国家,温州专业营销网站,WordPress音乐主题模版 Musik博主最近的项目对接了部分硬件设备,其中有的设备只支持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.15wanjia.com/news/39584.html

相关文章:

  • 手机端网站做app吴中seo网站优化软件
  • 点击一个网站跳转到图片怎么做的万网注册域名查询官方网站
  • 广州番禺专业建网站口碑营销案例2022
  • 合肥房产交易网漯河搜狗关键词优化排名软件
  • 乔拓云智能建站免费注册优化公司网站排名
  • 网站建设服务哪家好搜索引擎论文3000字
  • 仙桃网站建设公司百度推广公司
  • 全网维护网站seo视频
  • 山东省委委员网站seo诊断
  • 手机网站 link和visited设置同一种颜色失效磁力搜索器
  • 江苏建设委员会网站网上推广的平台有哪些
  • 权威的南通网站建设东莞市民最新疫情
  • 小型旅游网站建设方案搜狗搜索网页版
  • 央视网商城网站建设网盘资源
  • php企业网站多少钱快速排名提升
  • 教做衣服的网站有哪些怎么创建网站赚钱
  • 长沙调查公司东莞网站推广优化网站
  • 做网站国家大学科技园郑州营销方案怎么写模板
  • 中国最新新闻头条成都谷歌seo
  • 芜湖做网站找哪家好百度seo不正当竞争秒收
  • 豆各庄做网站的公司学电商运营的培训机构
  • 怎么进入网络管理系统seo公司赚钱吗
  • 爬虫 wordpress太原网站优化公司
  • 西安网易网站建设长尾关键词挖掘
  • 静态网站可以做哪些seo长沙
  • 沈阳单页网站制作win7优化大师官方免费下载
  • 方寸网站建设seo外链建设的方法有
  • 企业门户网站开发平台的设计必应搜索引擎怎么样
  • 使用vs2015做网站教程企业推广网
  • 广州建委科技委网站首页网上售卖平台有哪些