写在前面

用我的双手成就你的梦想。记录Netty权威指南Demo代码并分享出来,帮助读者快速完成Demo。

所属章节 链接
第二章2.1BIO通信 代码链接

TimeServer代码

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;public class TimeServer {public static void main(String[] args) throws IOException {int port = 8081;if (args != null && args.length > 0) {try {port = Integer.valueOf(args[0]);} catch (NumberFormatException e) {}}ServerSocket server = null;try {server = new ServerSocket(port);System.out.println("The time server is start in port : " + port);Socket socket = null;while (true) {socket = server.accept();new Thread(new TimeServerHandler(socket)).start();}} finally {if (server != null) {System.out.println("The time server close");server.close();server = null;}}}
}

TimeServerHandler代码

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;public class TimeServerHandler implements Runnable {private  Socket socket;public TimeServerHandler(Socket socket) {this.socket = socket;}public void run() {BufferedReader in = null;PrintWriter out = null;try {in = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));out = new PrintWriter(socket.getOutputStream(), true);String currentTime = null;String body = null;while (true) {body = in.readLine();if (body == null) {break;}System.out.println("The time server receive order : " + body);currentTime = "QUERY TIME ORDER".equalsIgnoreCase(body) ? new java.util.Date(System.currentTimeMillis()).toString() : "BAD ORDER";out.println(currentTime);}} catch (Exception e) {if (in != null) {try {in.close();} catch (Exception e2) {e2.printStackTrace();}}if (out != null) {out.close();out = null;}if (this.socket != null) {try {this.socket.close();} catch (Exception e2) {e2.printStackTrace();}this.socket = null;}}}
}

TimeClient代码

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;public class TimeClient {public static void main(String[] args) {int port = 8081;if (args != null && args.length > 0) {try {port = Integer.valueOf(args[0]);} catch (NumberFormatException e) {e.printStackTrace();}}Socket socket = null;BufferedReader in = null;PrintWriter out = null;try {socket = new Socket("127.0.0.1", port);in = new BufferedReader(new InputStreamReader(socket.getInputStream()));out = new PrintWriter(socket.getOutputStream(), true);out.println("QUERY TIME ORDER");System.out.println("Send order 2 server succeed.");String resp = in.readLine();System.out.println("Now is : " + resp);} catch (Exception e) {} finally {if (out != null) {out.close();out = null;}if (in != null) {try {in.close();} catch (Exception e) {e.printStackTrace();}in = null;}if (socket != null) {try {socket.close();} catch (Exception e) {e.printStackTrace();}socket = null;}}}}

说明

代码中的package要自行加入,运行结果与书本一致。

Netty权威指南2.1BIO通信Demo代码相关推荐

  1. 《Netty权威指南》

    <Netty权威指南> 基本信息 作者: 李林锋 出版社:电子工业出版社 ISBN:9787121233432 上架时间:2014-5-29 出版日期:2014 年6月 开本:16开 页码 ...

  2. netty权威指南笔记-以回车换行结尾的消息如何处理半包问题

    概述 TCP底层会发生粘包和拆包,这个是TCP的一个特性.为了减少网络数据传输的次数,TCP总是希望让网络数据到达一定量级的时候才将数据发送出去,而不是缓存区一有数据就马上发送数据. TCP底层会根据 ...

  3. 《Netty权威指南》笔记 —— 第二十、二十一、二十二, 二十三章

    <Netty权威指南>笔记--Netty高级特性 第20章 Netty架构剖析 Reactor通信调度层 职责链 ChannelPipeline 业务逻辑编排层 关键架构质量属性 高性能 ...

  4. [201504][Netty 权威指南][第2版][李林锋][著]

    [201504][Netty 权威指南][第2版][李林锋][著] https://github.com/wuyinxian124/nettybook2 基础篇 走进 Java NIO 第 1 章 J ...

  5. IT人物之《Netty权威指南》中文作者 专访华为李林锋:我与Netty那些不得不说的事

    摘要:Netty是业界最流行的NIO框架之一,它的健壮性.功能.性能.可定制性和可扩展性在同类框架中都是首屈一指的.近日,CSDN采访了Netty领域的权威人士李林锋,请他分享Netty开发的经验之道 ...

  6. 《Netty权威指南 第2版》学习笔记(1)---服务端与客户端开发入门

    前言 Netty权威指南中以时间服务器为入门案例,演示了如何通过Netty完成了服务端与客户端之间的交互过程. 在开始使用Netty开发之前,先回顾一下使用NIO进行服务端开发的步骤. 创建Serve ...

  7. netty权威指南 学习笔记http

    序 李林峰的<netty权威指南>,从Java的NIO开始介绍,后面介绍TCP粘包拆包.中级篇介绍编解码技术. 第10章介绍了HTTP及netty HTTP+XML的技术. 因为xml实际 ...

  8. netty权威指南第一章

    本章内容如下: 5种网络I/O模型的介绍 I/O多路复用的介绍 1.I/O基础入门 在Java1.4之前,Java对I/O的支持不完善,开发人员在开发高性能I/O的程序时,会面临以下问题: 没有数据缓 ...

  9. Netty权威指南(四)TCP粘包/拆包问题

    TCP粘包/拆包问题解决之道 上一章 一.介绍 1.1 TCP粘包/拆包问题说明 1.2 TCP粘包/拆包发生的原因 1.3 粘包问题的解决策略 二.未考虑TCP粘包导致的功能异常案例 2.1 Tim ...

  10. Netty权威指南带目录完整版.pdf

    2019独角兽企业重金招聘Python工程师标准>>> Netty权威指南带目录完整版.pdf 转载于:https://my.oschina.net/xiaojianyu/blog/ ...

最新文章

  1. 内存分配算法 之 首次适应-最佳适应
  2. 比较全面的MySQL优化参考
  3. 深度学习(二十一)——SRCNN, DRCN, VDSR
  4. Linux iptables防火墙详解(四)——配置实战
  5. Pro ASP.NET MVC - [3]Prerequisites(前提) - [2]Domain Modeling
  6. mac java 安装教程_mac 安装jdk1.8 附详细教程
  7. 算法学习笔记(使用追赶法解三对角方程组)
  8. hive用源生函数实现根据身份证计算年龄
  9. Pearson相关系数, Spearman相关系数,Kendall相关系数的区别
  10. 解决VMware虚拟机无法上网
  11. 推荐系统中常用算法以及优点缺点对比
  12. STM32解析航模遥控器的PPM信号
  13. Linux内核编译与模块编程
  14. 报错:Error in file.exists(pythonPath)
  15. NO29、最小的K个数(应该记住大顶堆和小顶堆的区别与联系,并不难)
  16. 计算机网络安全包括免疫性吗,【单选题】计算机网络安全的目标不包括A. 保密性 B. 不可否认性 C. 免疫性 D. 完整性...
  17. 如何在C++中方便的将float、int等类型数据转换成string类型,并利用ROS中的std_msg/String发布出去
  18. 7.1 函数的基本概念和定义
  19. qml 实现按钮样式( 带个小三角)
  20. php sockets, swoole 扩展安装

热门文章

  1. FastDFS——Bug篇——上传txt文档乱码
  2. otrs软件_开源 IT 服务管理软件(ITSM) - OTRS
  3. Kettle_Spoon如何将MySQL数据抽取到ES
  4. php令牌桶,令牌桶限频(TokenBucket)
  5. UWB 三边测量定位原理及最小二乘法和三角形质心法的应用—通俗解析
  6. 桌面图标整理工具(Fences Pro)
  7. SolidWorks修改工程图中文字字体的方法
  8. Solidworks如何导入和使用模板文件
  9. python爬虫 | 鸿鹄论坛评论爬取
  10. 【海康威视】WPF客户端二次开发:【5】Chrome浏览器调用客户端程序 链接参数处理 —— 前端encodeURIComponent编码,后端UrlDecode解码