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

营销业务应用系统贵阳seo网站推广优化

营销业务应用系统,贵阳seo网站推广优化,湘潭做网站价格品牌磐石网络,客户网站 备案文章目录 前言服务端相关配置核心代码 客户端 前言 前言 环境#xff1a; JDK#xff1a;64位 Jdk1.8 SpringBoot#xff1a;2.1.7.RELEASE Netty#xff1a;4.1.39.Final 功能#xff1a; 使用Netty监听端口接受客户端的数据#xff0c;并发送数据给客户端。 服务端 … 文章目录 前言服务端相关配置核心代码 客户端 前言 前言 环境 JDK64位 Jdk1.8 SpringBoot2.1.7.RELEASE Netty4.1.39.Final 功能 使用Netty监听端口接受客户端的数据并发送数据给客户端。 服务端 相关配置 pom.xml dependencygroupIdio.netty/groupIdartifactIdnetty-all/artifactIdversion4.1.39.Final/version/dependencyapplication.yml netty-socket:port: 9992bufferSize: 2048配置类 import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;/*** author qf* since 2024/10/08 21:08*/ Component ConfigurationProperties(prefix netty-socket) Data public class SocketConfig {private Integer port;private Integer bufferSize; } 核心代码 CommandLineRunner 当应用程序启动时CommandLineRunner 接口的实现类中的 run 方法会被调用 import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component;/*** author qf* since 2024/10/08 21:11*/ Slf4j Component public class CommandLineRunnerImpl implements CommandLineRunner {Autowiredprivate NettyServer nettyServer;Overridepublic void run(String... args) throws Exception {log.info(-----------监听端口启动成功-----------);nettyServer.start(); // 启动Netty服务} }服务类 import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioServerSocketChannel; import io.netty.handler.codec.LineBasedFrameDecoder; import io.netty.handler.codec.string.StringDecoder; import io.netty.handler.codec.string.StringEncoder; import io.netty.handler.logging.LogLevel; import io.netty.handler.logging.LoggingHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;/*** author qf* since 2024/10/08 21:13*/ Slf4j Component public class NettyServer {Autowiredprivate SocketConfig socketConfig;public void start() throws Exception {EventLoopGroup bossGroup new NioEventLoopGroup(1);EventLoopGroup workerGroup new NioEventLoopGroup();try {Integer bufferSize socketConfig.getBufferSize();ServerBootstrap bootstrap new ServerBootstrap();bootstrap.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).childOption(ChannelOption.RCVBUF_ALLOCATOR, new AdaptiveRecvByteBufAllocator(bufferSize, bufferSize, bufferSize)).handler(new LoggingHandler(LogLevel.INFO)).childHandler(new ChannelInitializerSocketChannel() {Overridepublic void initChannel(SocketChannel ch) throws Exception {//\n和\r\n分隔符ch.pipeline().addLast(new LineBasedFrameDecoder(bufferSize));ch.pipeline().addLast(new StringDecoder());ch.pipeline().addLast(new StringEncoder());// 添加自定义的业务处理器ch.pipeline().addLast(new DeviceServerHandler());}});ChannelFuture channelFuture bootstrap.bind(socketConfig.getPort()).sync();log.info(启动TCP服务器启动成功,正在监听端口:{}, socketConfig.getPort());channelFuture.channel().closeFuture().sync();} catch (Exception e) {log.info(netty发生错误, e);} finally {bossGroup.shutdownGracefully();workerGroup.shutdownGracefully();}} }业务处理器 import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import lombok.extern.slf4j.Slf4j;/*** author qf* since 2024/10/08 21:15*/ Slf4j public class DeviceServerHandler extends SimpleChannelInboundHandlerString {Overrideprotected void channelRead0(ChannelHandlerContext ctx, String dateStr) throws Exception {// 处理接收到的消息// 你可以在这里添加更复杂的业务逻辑比如解析消息、访问数据库等。log.info(监听的数据为------- dateStr);if (true) {//发送数据给客户端ctx.writeAndFlush(hello~);}}}客户端 import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelInitializer; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioSocketChannel; import io.netty.handler.codec.string.StringEncoder;import java.net.InetSocketAddress;/*** author qf* since 2024/10/11 18:01*/ public class HelloClient {public static void main(String[] args) throws InterruptedException {// 1. 启动类启动客户端new Bootstrap()// 2. 添加 EventLoop.group(new NioEventLoopGroup())//如果服务器端发来数据客户端的EventLoop就可以从selector触发读事件进行处理// 3. 选择客户端 channel 实现底层封装了SocketChannel.channel(NioSocketChannel.class)// 4. 添加处理器.handler(new ChannelInitializerNioSocketChannel() {Override // 在连接建立后被调用protected void initChannel(NioSocketChannel ch) throws Exception {ch.pipeline().addLast(new StringEncoder());//编码器将字符串编码成ByteBuf进行发送ch.pipeline().addLast(new EchoClientHandler());}})// 5. 连接到服务器.connect(new InetSocketAddress(localhost, 9992)).sync()//sync()是一个阻塞方法只有连接建立后才会继续执行.channel()//.channel()表示拿到服务器和客户端之间的SocketChannel(连接对象)// 6. 向服务器发送数据.writeAndFlush(hello, world\n);} }import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.util.CharsetUtil;/*** author qf* since 2024/10/11 18:05*/ public class EchoClientHandler extends ChannelInboundHandlerAdapter {private final ByteBuf message;public EchoClientHandler() {message Unpooled.buffer(256);message.writeBytes(hello netty.getBytes(CharsetUtil.UTF_8));}Overridepublic void channelActive(ChannelHandlerContext ctx) {ctx.writeAndFlush(message);}Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) {String data ((ByteBuf) msg).toString(CharsetUtil.UTF_8);System.out.println(data); // ctx.write(msg);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}Overridepublic void channelReadComplete(ChannelHandlerContext ctx) {ctx.flush();}Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {// Close the connection when an exception is raised.cause.printStackTrace();ctx.close();} }相关文章 SpringBoot项目监听端口接受数据(NIO版)
http://www.w-s-a.com/news/558844/

相关文章:

  • 网站建设的网页怎么做番禺网站开发哪家强
  • 网站开发是程序员吗百度网盘下载电脑版官方下载
  • 中国电力建设集团网站杭州网站运营
  • 大气网站模板下载效果好的网站建设公
  • 住房和城乡建设部网站打不开重庆市建设工程信息网官网30系统
  • 做美食软件视频网站大数据精准营销策略
  • 网站后台密码错误陕西大型网站建设
  • 网站建站中关键字搜索怎么弄wordpress 后台插件无法访问
  • 做减肥餐的网站网站优化注意事项
  • 做网站做推广有效果吗专门做淘宝优惠券的网站
  • 菜谱网站开发系统ps做网页效果图
  • 徐州品牌网站建设wordpress多重筛选页面
  • 网站改版提示无需改版个人怎么申请微信小程序
  • 电子商务网站建设的简要任务执行书可以注册免费网站
  • 公司网站设计需要什么豪爵铃木摩托车官网
  • 建收费网站合肥地区网站制作
  • 自己做头像网站小网站建设公司
  • 电子商务建设与网站规划wordpress linux安装
  • wordpress新手建站win8网站模版
  • 网站的简单布局孝感 商务 网站建设
  • 湖北手机版建站系统价格优化网站内容
  • 网站后台登录不显示验证码软文发布网站
  • 企业微网站建设方案收费的网站如何免费
  • 平昌县建设局网站中国500强企业有哪些
  • 网站开发制作的流程是什么网页打不开显示不安全怎么办
  • 网络网站开发设计安徽建设工程信息网怎么打不开了
  • 百度网站推广申请深圳公众号制作
  • 百度站长怎么做网站维护中国深圳航空公司官网
  • xampp安装网站模板海南一家天涯社区
  • 网站建设 管理系统开发仿租号网站源码网站开发