Java TCP/IP Socket编程(原书第2版) 封面

Java TCP/IP Socket编程(原书第2版)

评分 4.0
章节数
40
丛书
华章程序员书库
ISBN
9787111257561

标签

内容简介

本书是《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、虚拟线程等新版本特性的读者

阅读建议

  1. 手边开一个IDE,把第2章的TCP/UDP示例亲手敲通,再对照抓包工具观察报文流向。
  2. 读第3章时重点自己设计一套协议消息格式,体会成帧与解析为何比“直接write字符串”更可靠。
  3. 第4、5章的多线程与Selector示例建议做压力测试,观察超时、连接数与线程数之间的关系。
  4. 把每章末尾的练习题当作检查清单,做完再进入下一章,避免只读不写。

出版社简介

机械工业出版社 中国 · 成立于 1950 年

机械工业出版社(China Machine Press)在科技与专业出版之外,库内图书还体现出对心理学、计算机、管理、财经与社科等方向的持续关注。心理学方面收入荣格作品及分析心理学导论,并涉及压力与健康、成瘾与疗愈等应用议题;计算机领域有《计算机程序的构造和解释(JavaScript版)》;管理与财经类包括《管理行为(原书第4版)》《不平等的代价(珍藏版)》《这次不一样:八百年金融危机史(纪念版)》;科学哲学与科学史方面则有《世界观(原书第3版)》。相关作者资源涵盖C.G.荣格、威廉·麦圭尔、索努·沙姆达萨尼、加博尔·马泰等。公开资料有限,以上仅据库内图书归纳其出版面貌。

目录

  1. 译者序
  2. 前言
  3. 第1章 简介
  4. 1.1 计算机网络、数据包与协议
  5. 1.2 关于地址
  6. 1.3 关于名称
  7. 1.4 客户端与服务器
  8. 1.5 什么是套接字
  9. 1.6 练习
  10. 第2章 基本套接字
  11. 2.1 套接字地址
  12. 2.2 TCP套接字
  13. 2.2.1 TCP客户端
  14. 2.2.2 TCP服务器
  15. 2.2.3 输入流与输出流
  16. 2.3 UDP套接字
  17. 2.3.1 DatagramPacket类
  18. 2.3.2 UDP客户端
  19. 2.3.3 UDP服务器
  20. 2.3.4 使用UDP套接字发送和接收信息
  21. 2.4 练习
  22. 第3章 发送与接收数据
  23. 3.1 信息编码
  24. 3.1.1 基本整数
  25. 3.1.2 字符串与文本
  26. 3.1.3 位操作:编码布尔值
  27. 3.2 组合输入流与输出流
  28. 3.3 分帧与解析
  29. 3.4 Java特有的编码
  30. 3.5 构建与解析协议消息
  31. 3.5.1 基于文本的表示
  32. 3.5.2 二进制表示
  33. 3.5.3 发送与接收
  34. 3.6 关闭
  35. 3.7 练习
  36. 第4章 高级主题
  37. 4.1 多任务处理
  38. 4.1.1 Java多线程
  39. 4.1.2 服务器协议
  40. 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罗列,把篇幅集中在最常用的套接字用法与常见陷阱上,因此更适合快速上手而非当作手册查询。

读者评论

查询本书

本站为索引目录:「全网查询」由您发起、在您的浏览器中运行,所列入口均指向第三方站点,请自行判断可用性。

同类高分