标签
内容简介
本书是《TCP/IP Sockets in Java: Practical Guide for Programmers》第2版的中文翻译版,面向需要动手编写网络通信程序的Java开发者。全书以“原理简明、代码说话”为原则,围绕TCP/IP套接字在Java中的实现展开:先介绍网络、分组报文、协议、地址与名字、客户端/服务器模型等基础概念,再讲清套接字的本质;随后分别演示TCP客户端、TCP服务器端与UDP数据报的编写方法,以及输入输出流的组织方式。 在数据层面,书中讨论了整型、字符串、布尔值的编码方式,成帧与解析,文本式与二进制式协议消息的构建与解析,帮助读者写出能被不同系统正确读懂的报文。进阶部分覆盖多线程服务器、一客户一线程、线程池与Executor框架、阻塞与超时控制、广播与多播、Keep-Alive、缓冲区大小、地址重用、关闭后停留等套接字选项,以及连接关闭与生命周期问题。第5章专门讲解NIO的Channel、Buffer与Selector,第6章则从缓冲、死锁风险、性能等角度深入剖析底层机制。 全书篇幅紧凑,示例程序配套源码可下载,每章附有练习题,适合作为高校网络编程课程的补充读物,也适合工程师快速上手实际项目。
编辑推荐
这是一本“薄而硬”的实战小书:172页里塞下了从第一行Socket代码到NIO、多线程服务器、多播与套接字调优的完整路线,几乎没有废话。作者Calvert与Donahoo长期讲授计算机网络课程,写法是典型的“先给最小可运行示例,再解释背后的协议行为”,读者照抄几段代码就能跑通一个能收发消息的客户端与服务器,成就感很强。 相比大量动辄六七百页的Java网络编程教材,本书的取舍非常克制:不追求API大全,而是聚焦实际工程中最常踩的坑——消息怎么编码才不串包、成帧与解析怎么做、阻塞调用怎么设超时、一客户一线程何时该换成线程池、连接关闭之后TIME_WAIT为什么还在占端口。第6章从缓冲、死锁风险与性能角度回看TCP,是全书最有含金量的部分,能帮读者理解“为什么代码这样写会卡住”。 需要注意的是,本书第2版对应Java 1.5–1.7时代,配套源码也以那个时期的API为主,未覆盖后来的异步NIO(NIO.2)与虚拟线程等内容。因此它更适合作为一本打底子的书:把阻塞I/O、多线程与Selector这三条主线吃透,再去看更新的框架与资料。译者序与每章练习也让它很方便作为课程配套或自学清单使用。
适合谁读
适合
- 已掌握Java基础语法、想系统学网络通信的在读学生
- 需要自己实现客户端/服务器通信的初中级Java开发者
- 准备面试中TCP/UDP、I/O模型、多线程服务器等考点的求职者
- 讲授Java网络编程课程、需要短篇幅教材与练习题的高校教师
不适合
- 完全没写过Java、也不了解进程/线程概念的零基础读者
- 只想直接使用Netty等框架、不打算弄懂底层Socket机制的人
- 期待覆盖NIO.2、虚拟线程等新版本特性的读者
阅读建议
- 手边开一个IDE,把第2章的TCP/UDP示例亲手敲通,再对照抓包工具观察报文流向。
- 读第3章时重点自己设计一套协议消息格式,体会成帧与解析为何比“直接write字符串”更可靠。
- 第4、5章的多线程与Selector示例建议做压力测试,观察超时、连接数与线程数之间的关系。
- 把每章末尾的练习题当作检查清单,做完再进入下一章,避免只读不写。
出版社简介
机械工业出版社
中国 · 成立于 1950 年
机械工业出版社(China Machine Press)在科技与专业出版之外,库内图书还体现出对心理学、计算机、管理、财经与社科等方向的持续关注。心理学方面收入荣格作品及分析心理学导论,并涉及压力与健康、成瘾与疗愈等应用议题;计算机领域有《计算机程序的构造和解释(JavaScript版)》;管理与财经类包括《管理行为(原书第4版)》《不平等的代价(珍藏版)》《这次不一样:八百年金融危机史(纪念版)》;科学哲学与科学史方面则有《世界观(原书第3版)》。相关作者资源涵盖C.G.荣格、威廉·麦圭尔、索努·沙姆达萨尼、加博尔·马泰等。公开资料有限,以上仅据库内图书归纳其出版面貌。
目录
- 译者序
- 前言
- 第1章 简介
- 1.1 计算机网络、数据包与协议
- 1.2 关于地址
- 1.3 关于名称
- 1.4 客户端与服务器
- 1.5 什么是套接字
- 1.6 练习
- 第2章 基本套接字
- 2.1 套接字地址
- 2.2 TCP套接字
- 2.2.1 TCP客户端
- 2.2.2 TCP服务器
- 2.2.3 输入流与输出流
- 2.3 UDP套接字
- 2.3.1 DatagramPacket类
- 2.3.2 UDP客户端
- 2.3.3 UDP服务器
- 2.3.4 使用UDP套接字发送和接收信息
- 2.4 练习
- 第3章 发送与接收数据
- 3.1 信息编码
- 3.1.1 基本整数
- 3.1.2 字符串与文本
- 3.1.3 位操作:编码布尔值
- 3.2 组合输入流与输出流
- 3.3 分帧与解析
- 3.4 Java特有的编码
- 3.5 构建与解析协议消息
- 3.5.1 基于文本的表示
- 3.5.2 二进制表示
- 3.5.3 发送与接收
- 3.6 关闭
- 3.7 练习
- 第4章 高级主题
- 4.1 多任务处理
- 4.1.1 Java多线程
- 4.1.2 服务器协议
- 4.1.3 每客户端一线程
常见问题
这本书和《TCP/IP Sockets in Java》是同一本吗?
是。本书即该书第2版(Practical Guide for Programmers, Second Edition)的中文翻译版,由周恒民翻译、机械工业出版社2009年出版,ISBN为9787111257561。
书里的代码对应哪个Java版本?
主要面向Java 1.5至1.7,涵盖NetworkInterface、InetSocketAddress、Executor等当时新增的抽象,示例在较新的JDK上大多仍可运行,但需注意少量API与废弃类的差异。
没有网络基础能直接读吗?
可以,第1章从分组报文、协议、地址与名字讲起,为后续套接字内容做了铺垫;但完全不懂线程和I/O流的读者,建议先补一点Java基础。
这本书讲NIO讲得深吗?
第5章完整覆盖Channel、Buffer、Selector与数据报信道,并配有练习,足够理解NIO的基本模型;但未涉及NIO.2的文件与异步通道,需要另找资料。
为什么这本书只有一百多页?
它是“实践指南”定位的精简教材,删去了大量API罗列,把篇幅集中在最常用的套接字用法与常见陷阱上,因此更适合快速上手而非当作手册查询。
读者评论
查询本书
本站为索引目录:「全网查询」由您发起、在您的浏览器中运行,所列入口均指向第三方站点,请自行判断可用性。