Netty权威指南2.1BIO通信Demo代码
写在前面
用我的双手成就你的梦想。记录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代码相关推荐
- 《Netty权威指南》
<Netty权威指南> 基本信息 作者: 李林锋 出版社:电子工业出版社 ISBN:9787121233432 上架时间:2014-5-29 出版日期:2014 年6月 开本:16开 页码 ...
- netty权威指南笔记-以回车换行结尾的消息如何处理半包问题
概述 TCP底层会发生粘包和拆包,这个是TCP的一个特性.为了减少网络数据传输的次数,TCP总是希望让网络数据到达一定量级的时候才将数据发送出去,而不是缓存区一有数据就马上发送数据. TCP底层会根据 ...
- 《Netty权威指南》笔记 —— 第二十、二十一、二十二, 二十三章
<Netty权威指南>笔记--Netty高级特性 第20章 Netty架构剖析 Reactor通信调度层 职责链 ChannelPipeline 业务逻辑编排层 关键架构质量属性 高性能 ...
- [201504][Netty 权威指南][第2版][李林锋][著]
[201504][Netty 权威指南][第2版][李林锋][著] https://github.com/wuyinxian124/nettybook2 基础篇 走进 Java NIO 第 1 章 J ...
- IT人物之《Netty权威指南》中文作者 专访华为李林锋:我与Netty那些不得不说的事
摘要:Netty是业界最流行的NIO框架之一,它的健壮性.功能.性能.可定制性和可扩展性在同类框架中都是首屈一指的.近日,CSDN采访了Netty领域的权威人士李林锋,请他分享Netty开发的经验之道 ...
- 《Netty权威指南 第2版》学习笔记(1)---服务端与客户端开发入门
前言 Netty权威指南中以时间服务器为入门案例,演示了如何通过Netty完成了服务端与客户端之间的交互过程. 在开始使用Netty开发之前,先回顾一下使用NIO进行服务端开发的步骤. 创建Serve ...
- netty权威指南 学习笔记http
序 李林峰的<netty权威指南>,从Java的NIO开始介绍,后面介绍TCP粘包拆包.中级篇介绍编解码技术. 第10章介绍了HTTP及netty HTTP+XML的技术. 因为xml实际 ...
- netty权威指南第一章
本章内容如下: 5种网络I/O模型的介绍 I/O多路复用的介绍 1.I/O基础入门 在Java1.4之前,Java对I/O的支持不完善,开发人员在开发高性能I/O的程序时,会面临以下问题: 没有数据缓 ...
- Netty权威指南(四)TCP粘包/拆包问题
TCP粘包/拆包问题解决之道 上一章 一.介绍 1.1 TCP粘包/拆包问题说明 1.2 TCP粘包/拆包发生的原因 1.3 粘包问题的解决策略 二.未考虑TCP粘包导致的功能异常案例 2.1 Tim ...
- Netty权威指南带目录完整版.pdf
2019独角兽企业重金招聘Python工程师标准>>> Netty权威指南带目录完整版.pdf 转载于:https://my.oschina.net/xiaojianyu/blog/ ...
最新文章
- 内存分配算法 之 首次适应-最佳适应
- 比较全面的MySQL优化参考
- 深度学习(二十一)——SRCNN, DRCN, VDSR
- Linux iptables防火墙详解(四)——配置实战
- Pro ASP.NET MVC - [3]Prerequisites(前提) - [2]Domain Modeling
- mac java 安装教程_mac 安装jdk1.8 附详细教程
- 算法学习笔记(使用追赶法解三对角方程组)
- hive用源生函数实现根据身份证计算年龄
- Pearson相关系数, Spearman相关系数,Kendall相关系数的区别
- 解决VMware虚拟机无法上网
- 推荐系统中常用算法以及优点缺点对比
- STM32解析航模遥控器的PPM信号
- Linux内核编译与模块编程
- 报错:Error in file.exists(pythonPath)
- NO29、最小的K个数(应该记住大顶堆和小顶堆的区别与联系,并不难)
- 计算机网络安全包括免疫性吗,【单选题】计算机网络安全的目标不包括A. 保密性 B. 不可否认性 C. 免疫性 D. 完整性...
- 如何在C++中方便的将float、int等类型数据转换成string类型,并利用ROS中的std_msg/String发布出去
- 7.1 函数的基本概念和定义
- qml 实现按钮样式( 带个小三角)
- php sockets, swoole 扩展安装
热门文章
- FastDFS——Bug篇——上传txt文档乱码
- otrs软件_开源 IT 服务管理软件(ITSM) - OTRS
- Kettle_Spoon如何将MySQL数据抽取到ES
- php令牌桶,令牌桶限频(TokenBucket)
- UWB 三边测量定位原理及最小二乘法和三角形质心法的应用—通俗解析
- 桌面图标整理工具(Fences Pro)
- SolidWorks修改工程图中文字字体的方法
- Solidworks如何导入和使用模板文件
- python爬虫 | 鸿鹄论坛评论爬取
- 【海康威视】WPF客户端二次开发:【5】Chrome浏览器调用客户端程序 链接参数处理 —— 前端encodeURIComponent编码,后端UrlDecode解码