当前位置: 首页 > 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.mnyf.cn/news/47019.html

相关文章:

  • 网站导航一定要一样吗长沙服务好的网络营销
  • wordpress调用分类文章苏州seo关键词优化外包
  • 网站后台清除缓存在哪百度广告收费标准
  • 重庆高端网站建设价格北京债务优化公司
  • acaa平面设计师操作题seo服务工程
  • 企业网站网页设计费用百度百度地图
  • 外贸网站建设预算网站优化名词解释
  • wordpress 定制搜索seo优化是什么意思
  • 网站建设云南才力数据分析师需要学哪些课程
  • 网站开发期末作品代码和数据库运行好大全seo搜索铺文章
  • 游戏交易类网站seo怎么做泰安seo培训
  • 企业管理信息系统的功能网站优化外包推荐
  • 做网站备案需要多长时间全球搜效果怎么样
  • 网站建设排名优化公司网站百度权重查询
  • 白云做网站的公关键词批量调词 软件
  • 南宁网站推广v1数据分析
  • 阿里企业邮箱网页版优化网站排名工具
  • python开源代码网站网络推广图片
  • 新闻网站开发文档模板搜索引擎seo推广
  • 忆唐网不做网站做品牌网站优化什么意思
  • 加盟网站分页怎么做seoseo推广一年要多少钱
  • 网络诈骗做网站 维护游戏推广代理app
  • 百度医院网站建设网站分析培训班
  • 那些钓鱼网站是怎么做的seo搜索引擎优化方案
  • 电商网站开发长沙seo关键词
  • 帮别人做网站后期维护google关键词seo
  • 泰安网签数据怎样优化网站排名
  • 工厂弄个网站做外贸如何官网首页入口百度
  • php+mysql网站开发免费网站安全检测
  • 潍坊关键词优化服务青岛百度推广优化