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

wordpress付费商业站长沙3合1网站建设

wordpress付费商业站,长沙3合1网站建设,成武菏泽网站建设,新手如何建设网站导航#xff1a;从零开始手写mmo游戏从框架到爆炸#xff08;零#xff09;—— 导航-CSDN博客 上一章我们完成了netty服务启动的相关抽象#xff08;https://blog.csdn.net/money9sun/article/details/136025471#xff09;#xff0c;这一章我们再新增一个全…导航从零开始手写mmo游戏从框架到爆炸零—— 导航-CSDN博客           上一章我们完成了netty服务启动的相关抽象https://blog.csdn.net/money9sun/article/details/136025471这一章我们再新增一个全局的服务启动类方便后续扩展。 服务启动 新增的两个类如下 定义一个接口IServer   public interface IServer {/*** 服务启动* throws Exception*/void start() throws Exception;/*** 服务关闭* throws Exception*/void stop() throws Exception;/*** 服务重启* throws Exception*/void restart() throws Exception;}定义实现类 BasicServer import com.loveprogrammer.base.factory.ServerChannelFactory; import io.netty.channel.Channel; import io.netty.channel.ChannelFutureListener;/*** ClassName BasicServer* Description 网络服务启动实现* Author admin* Date 2024/2/4 16:25* Version 1.0*/ public class BasicServer implements IServer{Channel acceptorChannel;Overridepublic void start() throws Exception {acceptorChannel ServerChannelFactory.createAcceptorChannel();acceptorChannel.closeFuture().sync();}Overridepublic void stop() throws Exception {if(acceptorChannel ! null) {acceptorChannel.close().addListener(ChannelFutureListener.CLOSE);}}Overridepublic void restart() throws Exception {stop();start();} }启动类修改 // 启动类启动try {IServer server new BasicServer();server.start();} catch (Exception e) {LOGGER.error( 服务器启动失败,e);} 网络事件监听器 创建一个类用于监听网络的变化创建一个接口INetworkEventListener里面包含3个方法onConnected/onDisconnected/onExceptionCaught。依然创建在core组件中 public interface INetworkEventListener {/*** 连接建立** param ctx ChannelHandlerContext*/void onConnected(ChannelHandlerContext ctx);/*** 连接断开* * param ctx ChannelHandlerContext*/void onDisconnected(ChannelHandlerContext ctx);/*** 异常发生* * param ctx ChannelHandlerContext* * param throwable 异常*/void onExceptionCaught(ChannelHandlerContext ctx, Throwable throwable);}监听器实现类 NetworkListener package com.loveprogrammer.base.network.support;import com.loveprogrammer.base.network.listener.INetworkEventListener; import io.netty.channel.ChannelHandlerContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory;public class NetworkListener implements INetworkEventListener {protected static final Logger logger LoggerFactory.getLogger(NetworkListener.class);Overridepublic void onConnected(ChannelHandlerContext ctx) {logger.info(建立连接);}Overridepublic void onDisconnected(ChannelHandlerContext ctx) {logger.info(建立断开);}Overridepublic void onExceptionCaught(ChannelHandlerContext ctx, Throwable throwable) {logger.warn(异常发生, throwable);} }然后我们要修改TcpServerStringInitializer public class TcpServerStringInitializer extends ChannelInitializerSocketChannel {Overrideprotected void initChannel(SocketChannel ch) {ChannelPipeline pipeline ch.pipeline();pipeline.addLast(framer,new DelimiterBasedFrameDecoder(8192, Delimiters.lineDelimiter()));pipeline.addLast(decoder, new StringDecoder());pipeline.addLast(encoder, new StringEncoder());INetworkEventListener listener new NetworkListener();pipeline.addLast(new TcpMessageStringHandler(listener));}} TcpMessageStringHandler.java 修改如下 package com.loveprogrammer.base.network.channel.tcp.str;import com.loveprogrammer.base.network.listener.INetworkEventListener; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory;/*** ClassName TcpMessageStringHandler* Description tcp消息处理类* Author admin* Date 2024/2/4 15:16* Version 1.0*/ public class TcpMessageStringHandler extends SimpleChannelInboundHandlerString {private static final Logger logger LoggerFactory.getLogger(TcpMessageStringHandler.class);private final INetworkEventListener listener;public TcpMessageStringHandler(INetworkEventListener listener) {this.listener listener;}Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable throwable) {listener.onExceptionCaught(ctx,throwable);}Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {super.channelRead(ctx, msg);}Overrideprotected void channelRead0(ChannelHandlerContext ctx, String msg) {logger.info(数据内容data msg);String result 我是服务器我收到了你的信息: msg;result \r\n;ctx.writeAndFlush(result);}Overridepublic void channelActive(ChannelHandlerContext ctx) throws Exception {listener.onConnected(ctx);}Overridepublic void channelInactive(ChannelHandlerContext ctx) throws Exception {listener.onDisconnected(ctx);} }上一章 从零开始手写mmo游戏从框架到爆炸二— 核心组件抽离与工厂模式创建-CSDN博客 下一章 从零开始手写mmo游戏从框架到爆炸四— session session-CSDN博客 全部源码详见 gitee : eternity-online: 多人在线mmo游戏 - Gitee.com 分支step-03 参考 java游戏服务器开发 https://blog.csdn.net/cmqwan/category_7690685.html
http://www.hkea.cn/news/14260326/

相关文章:

  • 自助建站网站的宣传手册单位建设一个网站的费用
  • php零基础做网站推一把网络营销学院
  • 网站全站开发需要学什么济南最新防疫政策调整
  • 网站标题几个字合适石家庄网站托管
  • 做音乐网站首页要求最近最火的电商平台是哪个
  • 转转网站怎么建设新市区做网站
  • 做网页设计的网站做的网站图片不显示
  • 重生做网站的小说上海人才网官网入口
  • 丽水建设局网站文件电销客户数据怎么买
  • 网站建设最新建网站如何赚钱
  • 360建筑网 官方网站标小智在线logo免费设计
  • 做网站建设的wordpress 浮动导航插件
  • 做网站后的收获豆瓣 wordpress 插件
  • 打开网站自动跳转代码网站建设 用英语
  • 汽车4s店网站建设方案大连企业网站哪一家好
  • 诸城网站优化域名检测查询
  • 智慧团建网站官网电脑版手机网站插件代码
  • 网站诊断内容网上销售平台有哪些
  • 网站的建设方面武昌做网站公司
  • 宁波网站建设设计手机企业网站
  • wordpress建站教程阿里云一级a做爰片免费观看 安全网站
  • 雄安网建 网站建设靖江网站制作多少钱
  • 网站兼容浏览器顺德乐从网站建设
  • windows2008网站wordpress 4.9.2漏洞
  • 养殖推广网站怎么做怎么让谷歌收录我的网站
  • 青海省城乡建设厅网站首页wordpress 出名主题
  • 在网站上如何做天气预报栏开发做游戏的网站
  • 网站备案需要钱吗口碑好的镇江网站建设
  • 四川建设企业网站页面设计说明万能模板
  • 通化 网站建设电脑制作软件的工具