`
taiwei.peng
  • 浏览: 232590 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Netty 扫盲例子

 
阅读更多

package com.sunline.core.mktinfo.util;

 

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;

 

public class TimeServer {

 

public void bind(int port) throws Exception{

   //链接 connection

   EventLoopGroup bossGroup=new NioEventLoopGroup();

   //实际上就是读写

   EventLoopGroup workerGroup=new NioEventLoopGroup();

   try{

     //引入辅助启动类 Builder模式

     ServerBootstrap bootstarp=new ServerBootstrap();

     bootstarp.group(bossGroup,workerGroup)

     //创建一个服务管道类型,工厂模式 建立实例

     .channel(NioServerSocketChannel.class)

     .option(ChannelOption.SO_BACKLOG,1024).childHandler(new ChildChannelHandler());

     //JDK自带 异步操作调用的

     ChannelFuture future=bootstarp.bind(port).sync();

     future.channel().closeFuture().sync();

  }catch(Exception ce){

     ce.printStackTrace();

  }finally{

      bossGroup.shutdownGracefully();

      workerGroup.shutdownGracefully();

  }

}

 

private class ChildChannelHandler extends ChannelInitializer<SocketChannel> {

 

protected void initChannel(SocketChannel ch) {

// 实际业务处理类

ch.pipeline().addLast(new TimerServerHandler());

}

}

 

public static void main(String[] args) {

try {

int port = 8080;

TimeServer time=new TimeServer();

time.bind(port);

} catch (Exception ce) {

ce.printStackTrace();

}

}

}

 

//实际处理类

package com.sunline.core.mktinfo.util;

 

import io.netty.buffer.ByteBuf;

import io.netty.buffer.Unpooled;

import io.netty.channel.ChannelHandlerAdapter;

import io.netty.channel.ChannelHandlerContext;

 

import java.text.SimpleDateFormat;

import java.util.Date;

 

public class TimerServerHandler extends ChannelHandlerAdapter{

 

//读取客户端传入消息

public void channelRead(ChannelHandlerContext ctx,Object msg)throws Exception{

  ByteBuf buf=(ByteBuf)msg;

  byte[] req=new byte[buf.readableBytes()];

  String body=new String(req,"utf-8");

  System.out.println("服务器接收到的消息是:"+body);

  SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

  String curtime= "QUERY_TIME_ORDER".equalsIgnoreCase(body)?df.format(new Date (System.currentTimeMillis()).toString()):"BAD_REQUEST";

  //高效构建ByteFuf

  ByteBuf responseBuf=Unpooled.copiedBuffer(curtime.getBytes());

  ctx.write(responseBuf);

}

 

public void channelReadComplete(ChannelHandlerContext ctx)throws Exception{

   //将缓存区中的消息全部写入socketChannel 发送给客户端

   ctx.flush();

}

 

@Override

public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause)

throws Exception {

ctx.close();

}

}

分享到:
评论

相关推荐

    netty各种例子

    基于netty各种例子。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...

    Netty5完整例子

    Netty5完整例子,里面包含编码,解码,心跳处理等,代码可用。 例子的内容是:服务端启动,客户端启动,客户端连接服务器后服务器发一个Message的对象给客户端,客户端接受并打印Message里边的内容。编解码的处理为:...

    netty各种例子(基于netty各种例子。).zip

    这个压缩包“netty各种例子(基于netty各种例子。).zip”显然是一个包含Netty示例代码的资源包,可以帮助开发者更好地理解和使用Netty框架。 在Java世界中,Netty因其高效、易用和丰富的特性而被广泛应用于多种场景...

    Netty 聊天 例子

    在本“Netty 聊天例子”中,我们将深入探讨如何利用 Netty 构建一个简单的聊天应用,这对于初学者来说是一个很好的起点。 **Netty 基础** Netty 的核心组件包括 Channel、Bootstrap、Pipeline 和 EventLoopGroup。...

    netty实现websocket例子

    在"Netty实现WebSocket例子"中,我们将探讨如何使用Netty来搭建WebSocket服务器,并实现客户端与服务器之间的双向通信。首先,我们需要理解WebSocket的基本概念和工作原理。WebSocket协议是基于TCP的,它通过HTTP的...

    Netty4.0 官网例子(免费)

    通过 Netty 的官网例子,你可以深入学习这些概念并了解如何在实际项目中运用。官方示例通常覆盖了基础到高级的各种用法,是理解和掌握 Netty4.0 的良好起点。你可以从 netty-4.0 压缩包中的源代码开始,逐步分析和...

    java Netty 框架例子源码.rar

    这个压缩包文件"java Netty 框架例子源码.rar"很可能包含了一系列示例代码,帮助我们了解和学习如何在实际项目中使用 Netty。 Netty 的核心组件包括: 1. **Channel**:是 Netty 中的基本概念,代表一个打开的连接...

    Netty 官方例子

    这个“Netty 官方例子”压缩包包含了一系列官方提供的示例代码,旨在帮助开发者更好地理解和运用 Netty 框架。通过在 IntelliJ IDEA(简称 IDEA)中运行这些例子,我们可以深入学习 Netty 的核心特性和使用方式。 1...

    netty官方例子

    这个“netty官方例子”压缩包提供了一系列的示例代码,帮助开发者更好地理解和运用Netty框架。这些例子是基于Netty 4版本,已经整理为可直接运行的Maven工程,便于开发者在本地进行实践和学习。 首先,我们要了解...

    netty入门例子--(不是翻译官方文档)

    这个“netty入门例子”旨在帮助初学者理解Netty的基本用法和特性,而不是简单地翻译官方文档,它提供了几个开发模板,以便于深入理解Netty中的消息异步通信机制和TCP通信的封装。 首先,Netty的核心是它的异步模型...

    netty原理及例子

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。它是Java领域非常流行的网络库,尤其在处理高并发、低延迟的网络应用中表现出色。本篇文章将深入探讨Netty的...

    netty小例子

    这个“netty小例子”很可能是为了帮助初学者理解和掌握 Netty 的基本用法,包括如何创建客户端和服务端,以及如何集成日志系统。 在 Netty 中,服务端通常由 `ServerBootstrap` 类来初始化,它负责配置服务器的参数...

    netty4.0源码,netty例子,netty api文档

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个压缩包包含的是Netty 4.0.0.CR3版本的相关资源,包括源码、示例以及API文档,对于学习和理解Netty的工作...

    demo.rar netty代码例子

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个“demo.rar”压缩包包含了基于 Netty 实现的代码示例,可以帮助我们更好地理解并学习 Netty 的核心概念和...

    淘宝netty例子以及原理

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在本文中,我们将深入探讨Netty的工作原理,以及它在淘宝这一大型电商平台中的具体应用。 首先,让我们了解...

    Netty5例子

    这个“Netty5例子”很可能是包含了一系列使用Netty 5版本编写的示例代码,用于帮助开发者理解和掌握Netty的核心概念和功能。 在Netty中,关键的概念包括: 1. **BossGroup 和 WorkerGroup**:Netty 使用 NIO(非...

    Netty3.5代码例子

    在“Netty3.5代码例子”中,你可能会看到以下几个关键组件: - **Bootstrap**:这是启动服务器或客户端的入口点,配置网络连接的各种参数。 - **ServerBootstrap**:用于创建服务器端的Bootstrap。 - **...

    netty proxy 代理例子

    在“netty proxy 代理例子”中,我们将会探讨如何利用 Netty 实现一个代理服务器,该代理服务器可以转发客户端的请求到目标服务器,并将响应回传给客户端。 首先,我们需要理解代理服务器的基本原理。代理服务器...

    java-netty:netty框架例子代码

    下面将详细探讨 Netty 的核心概念和例子代码中的关键知识点。 首先,Netty 的核心设计理念是基于 Channel 和 EventLoop。Channel 是 Netty 中处理 I/O 操作的基本单元,它可以是 TCP 连接、UDP 数据报或者文件描述...

    netty简单实例

    在"ChatNetty"这个例子中,我们将创建一个简单的聊天服务器和客户端。以下是实现的主要步骤: 1. **创建 ChannelHandler**:定义自定义的 ChannelInboundHandler 和 ChannelOutboundHandler,用于处理接收到的数据...

Global site tag (gtag.js) - Google Analytics