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

小说网站防盗做的好网站设计 网站推广 网站优化

小说网站防盗做的好,网站设计 网站推广 网站优化,河南郑州广城区,海南自贸港跨境电商怎么做#x1f60f;★,:.☆(#xffe3;▽#xffe3;)/$:.★ #x1f60f; 这篇文章主要介绍Netty创建网络服务端客户端示例。 学其所用#xff0c;用其所学。——梁启超 欢迎来到我的博客#xff0c;一起学习#xff0c;共同进步。 喜欢的朋友可以关注一下#xff0c;下次更… ★,°:.☆(▽)/$:.°★ 这篇文章主要介绍Netty创建网络服务端客户端示例。 学其所用用其所学。——梁启超 欢迎来到我的博客一起学习共同进步。 喜欢的朋友可以关注一下下次更新不迷路 文章目录 :smirk:1. Netty介绍:blush:2. 环境安装与配置:satisfied:3. TCP应用示例:satisfied:4. UDP应用示例 1. Netty介绍 Netty官网https://netty.io/ Netty是一个基于Java的异步事件驱动的网络应用程序框架专门用于快速开发高性能、可扩展和可维护的网络服务器和客户端。它提供了简单而强大的API使开发人员能够轻松地构建各种网络应用包括TCP、UDP、HTTP、WebSocket等。 以下是一些关键特点和功能 1.异步和事件驱动Netty使用非阻塞I/O模型通过异步事件驱动方式处理网络操作提供了卓越的性能和可扩展性。 2.高性能Netty通过有效地利用底层操作系统提供的机制如选择器、零拷贝等来实现高效的数据传输和处理以满足对性能和吞吐量的要求。 3.安全Netty提供了强大的加密和认证支持包括SSL/TLS和各种认证机制保护网络通信的安全性。 4.多协议支持Netty支持多种主流的网络协议如TCP、UDP、HTTP、WebSocket等使开发人员可以方便地构建不同类型的网络应用。 5.灵活的处理程序模型Netty采用了高度可扩展的处理程序Handler模型使开发人员可以按需配置和组合处理程序来处理网络事件和数据实现复杂的业务逻辑。 6.内置编解码器Netty提供了丰富的内置编解码器使开发人员能够轻松地处理各种协议和数据格式简化了网络通信中的数据编解码工作。 7.完善的文档和社区支持Netty拥有完善的官方文档、示例代码和教程以及活跃的社区支持使开发人员能够快速上手并解决问题。 2. 环境安装与配置 IDEA创建Netty工程只要在pom.xml中引入如下依赖 dependenciesdependencygroupIdio.netty/groupIdartifactIdnetty-all/artifactIdversion4.1.49.Final/version/dependency/dependencies3. TCP应用示例 创建TCP服务端客户端需要先开启通道Channel然后再有一个事件处理Handler下面就创建这4个类 NettyServer.java package org.example;import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioServerSocketChannel; import io.netty.handler.logging.LogLevel; import io.netty.handler.logging.LoggingHandler;public class NettyServer {private final int port;public NettyServer(int port) {this.port port; // server port}public void start() throws Exception {EventLoopGroup bossGroup new NioEventLoopGroup();EventLoopGroup workerGroup new NioEventLoopGroup();try {ServerBootstrap b new ServerBootstrap();b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).option(ChannelOption.SO_BACKLOG, 128).handler(new LoggingHandler(LogLevel.INFO)).childHandler(new ChannelInitializerSocketChannel() {Overridepublic void initChannel(SocketChannel ch) throws Exception {ch.pipeline().addLast(new NettyServerHandler()); // channel to handler}});ChannelFuture f b.bind(port).sync();System.out.println(Server started on port port);f.channel().closeFuture().sync();} finally {workerGroup.shutdownGracefully();bossGroup.shutdownGracefully();}}public static void main(String[] args) throws Exception {int port 8080;NettyServer server new NettyServer(port);server.start();} }NettyServerHandler.java package org.example;import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.*; import io.netty.util.CharsetUtil;public class NettyServerHandler extends ChannelInboundHandlerAdapter {/*** 读取数据实际(这里我们可以读取客户端发送的消息)* param ctx 上下文对象* param msg 客户端发送的数据* throws Exception*/Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {System.out.println(server ctx ctx);Channel channel ctx.channel();// 将 msg 转成一个 ByteBuf// ByteBuf 是 Netty 提供的不是 NIO 的 ByteBuffer.ByteBuf buf (ByteBuf) msg;System.out.println(客户端发送的消息是: buf.toString(CharsetUtil.UTF_8));System.out.println(客户端地址: channel.remoteAddress());}/*** 读取完毕回复* param ctx* throws Exception*/Overridepublic void channelReadComplete(ChannelHandlerContext ctx) throws Exception {// writeAndFlush 是 write flush 将数据写入到缓存并刷新ctx.writeAndFlush(Unpooled.copiedBuffer(Hello, Client!, CharsetUtil.UTF_8));}/*** 处理异常, 一般是需要关闭通道* param ctx* param cause* throws Exception*/Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {ctx.close();} }NettyClient.java package org.example;import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioSocketChannel;public class NettyClient {private final String host;private final int port;public NettyClient(String host, int port) {this.host host; // ipthis.port port; // port}public void start() throws Exception {EventLoopGroup group new NioEventLoopGroup();try {Bootstrap b new Bootstrap();b.group(group).channel(NioSocketChannel.class).option(ChannelOption.TCP_NODELAY, true).handler(new ChannelInitializerSocketChannel() {Overridepublic void initChannel(SocketChannel ch) throws Exception {ch.pipeline().addLast(new NettyClientHandler());}});ChannelFuture f b.connect(host, port).sync();System.out.println(Connected to host : port);f.channel().closeFuture().sync();} finally {group.shutdownGracefully();}}public static void main(String[] args) throws Exception {String host localhost;int port 8080;NettyClient client new NettyClient(host, port);client.start();} }NettyClientHandler.java package org.example;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;public class NettyClientHandler extends ChannelInboundHandlerAdapter {/*** 通道创建就绪后触发* param ctx* throws Exception*/Overridepublic void channelActive(ChannelHandlerContext ctx) throws Exception {System.out.println(client ctx ctx);ctx.writeAndFlush(Unpooled.copiedBuffer(Hello, Server!, CharsetUtil.UTF_8));}/*** 当通道有读取事件时会触发* param ctx* param msg* throws Exception*/Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {ByteBuf buf (ByteBuf) msg;System.out.println(服务器回复的消息: buf.toString(CharsetUtil.UTF_8));System.out.println(服务器的地址 ctx.channel().remoteAddress());}/*** 处理异常, 一般是需要关闭通道* param ctx* param cause* throws Exception*/Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {cause.printStackTrace();ctx.close();} }分别运行服务端和客户端类结果如下 4. UDP应用示例 跟上面TCP类似UDP也是要创建Channel和Handler下面创建这4个类 UDPServer.java package org.example;import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.DatagramChannel; import io.netty.channel.socket.nio.NioDatagramChannel;public class UDPServer {private final int port;public UDPServer(int port) {this.port port;}public void start() throws Exception {EventLoopGroup group new NioEventLoopGroup();try {Bootstrap b new Bootstrap();b.group(group).channel(NioDatagramChannel.class).handler(new ChannelInitializerDatagramChannel() {Overrideprotected void initChannel(DatagramChannel ch) throws Exception {ch.pipeline().addLast(new UDPServerHandler());}});ChannelFuture f b.bind(port).sync();System.out.println(Server started on port port);f.channel().closeFuture().sync();} finally {group.shutdownGracefully();}}public static void main(String[] args) throws Exception {int port 8888;UDPServer server new UDPServer(port);server.start();} }UDPServerHandler.java package org.example;import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.channel.socket.DatagramPacket; import io.netty.util.CharsetUtil;public class UDPServerHandler extends SimpleChannelInboundHandlerDatagramPacket {Overrideprotected void channelRead0(ChannelHandlerContext ctx, DatagramPacket msg) throws Exception {// 处理接收到的数据String receivedMessage msg.content().toString(CharsetUtil.UTF_8);System.out.println(Received message: receivedMessage);// 响应客户端String responseMessage Hello, client!;DatagramPacket responsePacket new DatagramPacket(Unpooled.copiedBuffer(responseMessage, CharsetUtil.UTF_8),msg.sender());ctx.writeAndFlush(responsePacket);} }UDPClient.java package org.example;import io.netty.bootstrap.Bootstrap; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.DatagramChannel; import io.netty.channel.socket.DatagramPacket; import io.netty.channel.socket.nio.NioDatagramChannel; import io.netty.util.CharsetUtil;import java.net.InetSocketAddress;public class UDPClient {private final String host;private final int port;public UDPClient(String host, int port) {this.host host;this.port port;}public void start() throws Exception {EventLoopGroup group new NioEventLoopGroup();try {Bootstrap b new Bootstrap();b.group(group).channel(NioDatagramChannel.class).handler(new ChannelInitializerDatagramChannel() {Overrideprotected void initChannel(DatagramChannel ch) throws Exception {ch.pipeline().addLast(new UDPClientHandler());}});ChannelFuture f b.bind(0).sync();System.out.println(Client started);// 发送消息给服务端String message Hello, server!;DatagramPacket packet new DatagramPacket(Unpooled.copiedBuffer(message, CharsetUtil.UTF_8),new InetSocketAddress(host, port));f.channel().writeAndFlush(packet).sync();f.channel().closeFuture().sync();} finally {group.shutdownGracefully();}}public static void main(String[] args) throws Exception {String host localhost;int port 8888;UDPClient client new UDPClient(host, port);client.start();} }UDPClientHandler.java package org.example;import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.channel.socket.DatagramPacket; import io.netty.util.CharsetUtil;public class UDPClientHandler extends SimpleChannelInboundHandlerDatagramPacket {Overrideprotected void channelRead0(ChannelHandlerContext ctx, DatagramPacket msg) throws Exception {// 处理接收到的数据String receivedMessage msg.content().toString(CharsetUtil.UTF_8);System.out.println(Received response from server: receivedMessage);} }运行结果如下 以上。
http://www.w-s-a.com/news/935614/

相关文章:

  • qq空间怎么做网站做企业平台的网站有哪些
  • 网站的优缺点wordpress手机适配模板中文
  • 福州网站建设H5广告公司简介简短
  • 网站404页面的作用app开发郑州
  • 亚马逊中国网站建设目标网站建设的策划
  • 林州网站建设服务徐州网站建设
  • 如何检测网站死链景德镇网站建设哪家好
  • 旅游网站开发目标天津专业做网站公司
  • 名者观看网站快手小程序
  • 网络架构扁平化windows优化大师好不好
  • 安康养老院收费价格表兰州seo整站优化服务商
  • 网站开发技术方案模板无锡网站建设推荐
  • 自助建站系统注册三维家3d设计软件免费
  • 做seo网站标题重要吗郑州众诚建设监理有限公司网站
  • 建设网站南沙区百度关键词推广怎么做
  • 网站建设公司做销售前景好不好石家庄外贸网站制作
  • windows2008做网站网站首页打开速度
  • 做外贸要做什么网站服装设计图
  • 中山市路桥建设有限公司网站网站开发角色分配权限
  • 加强档案网站建设网站搭建好了不用会不会被攻击
  • 维护网站信息网络建设服务
  • 网站建设策划书模板下载用自己电脑配置服务器做网站
  • 360免费建站空间淘宝数据网站开发
  • 做分销的网站本地dede网站怎么上线
  • 中学网站模板北京管理咨询公司
  • 网站开发用哪个软件方便二级网站建设 管理思路
  • 个人怎么创建网站中国建设银行网站口
  • 跟知乎一样的网站做展示网站步骤
  • 邯郸网站建设效果好wordpress app 加载慢
  • 做app的网站有哪些功能广州自适应网站建设