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

网站如何做防劫持网络推广竞价

网站如何做防劫持,网络推广竞价,未备案网站 怎么处理,万网 x3 wordpress博主最近的项目对接了部分硬件设备,其中有的设备只支持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.shuangfujiaoyu.com/news/49628.html

相关文章:

  • 嘉兴市住房和城乡建设局门户网站济宁百度推广公司有几家
  • wordpress客户端登录优化大师免费下载
  • 自己做一网站 多做宣传.刷推广链接人数的软件
  • wordpress301跳转宁波seo优化公司
  • 武汉网站建设公司排名上海谷歌优化
  • icp备案是网站上线前电商推广方案
  • 网站花瓣飘落的效果怎么做防控措施持续优化
  • 信息手机网站模板下载软件百度seo优化技巧
  • 手机建站服务2024年的新闻时事热点论文
  • 楚雄网站建设图片外链上传网站
  • 网页设计制作网站步骤阿里云搜索引擎网址
  • 5g互联如何取消网站备案湖南疫情最新消息今天
  • 两江新区建设管理局网站精准推广引流5000客源
  • 数字资产交易网站建设济源网络推广
  • 玛迪做网站写手代写平台
  • 深圳网站建设有免费的吗市场调研方案怎么写
  • 网站开发网百度热搜高考大数据
  • 好点的开发网站的公司制作公司网站大概多少钱
  • 自己怎么做网站卖东西外汇seo公司
  • 张家港做网站营销工具
  • 人力资源和社会保障部社会保险事业管理中心名风seo软件
  • 莱西做网站seo兼职招聘
  • 广州 互联网公司 网站首页南宁优化网站收费
  • 北京市网站建设公司常用的网络推广方法
  • 网站建设中存在的问题模板建站多少钱
  • 中国做的网站国外能打开吗全网引擎搜索
  • 太原网站建设策划百度百度地图
  • 做网站是域名怎么申请正规接单赚佣金的app
  • 安徽省建设厅网站证书查询自己的网站怎么做seo
  • wordpress付费破解版kj6699的seo综合查询