第 1 章 简介 3 1.1 计算机网络,分组报文和协议3 1.2 关于地址6 1.3 关于名字8 1.4 客户端和服务器8 1.5 什么是套接字.9 1.6 练习10 第 2 章 基本套接字 10 2.1 套接字地址10 2.2 TCP套接字.17 2.2.1 TCP客户端.17 2.2.2 TCP服务器端..22 2.2.3 输入输出流26 2.3 UDP套接字 28 2.3.1 DatagramPacket类.28 2.3.2 UDP客户端 30 2.3.3 UDP服务器端 .36 2.3.4 使用UDP套接字发送和接收信息 .38 2.4 练习40 第 3 章 发送和接收数据41 3.1 信息编码.42 3.1.1 基本整型42 3.1.2 字符串和文本.48 3.1.3 位操作:布尔值编码50 3.2 组合输入输出流51 3.3 成帧与解析52 3.4 Java特定编码58 3.5 构建和解析协议消息59 3.5.1 基于文本的表示方法62 3.5.2 二进制表示方法65 3.5.3 发送和接收67 3.6 结束76 3.7 练习76 第 4 章 进阶 77 4.1 多任务处理77 4.1.1 Java 多线程.78 4.1.2 服务器协议80 4.1.3 一客户一线程.84 4.1.4 线程池86 4.1.5 系统管理调度:Executor接口 89 4.2 阻塞和超时91 4.2.1 accept(),read()和receive() .91 4.2.2 连接和写数据.92 4.2.3 限制每个客户端的时间.92 4.3 多接收者.94 4.3.1 广播.94 4.3.2 多播.95 4.4 控制默认行为100 4.4.1 Keep-Alive100 4.4.2 发送和接收缓存区的大小101 4.4.3 超时..101 4.4.4 地址重用..102 4.4.5 消除缓冲延迟..102 4.4.6 紧急数据..103 4.4.7 关闭后停留103 4.4.8 广播许可..103 4.4.9 通信等级..104 4.4.10 基于性能的协议选择.104 4.5 关闭连接..104 4.6 Applets 111 4.7 结束.112 4.8 练习.112 第 5 章 NIO..112 5.1 为什么需要NIO? ..113 5.2 与Buffer一起使用Channel ..115 5.3 Selector118 5.4 Buffer详解 ..125 5.4.1 Buffer索引125 5.4.2 创建Buffer.126 5.4.3 存储和接收数据128 5.4.4 准备Buffer:clear(),flip(),和rewind().130 5.4.5 压缩Buffer中的数据..132 5.4.6 Buffer透视:duplicate(),slice()等 134 5.4.7 字符编码..136 5.5 流(TCP)信道详解.136 5.6 Selector详解139 5.6.1 在信道中注册..139 5.6.2 选取和识别准备就绪的信道..141 5.6.3 信道附件..143 5.6.4 Selector小结..144 5.7 数据报(UDP)信道 144 5.8 练习.149 1. 使用定长的写缓冲区改写TCPEchoClientNonblocking.java。 149 2.使用Buffer和DatagramChannel编写一个回显客户端。 .149 第 6 章 深入剖析 ..149 6.1 缓冲和TCP.152 6.2 死锁风险..155 6.3 性能相关..158 6.4 TCP套接字的生存周期158 6.4.1 连接..158 6.4.2 关闭TCP连接..164 6.5 解调多路复用揭秘..167 6.6 练习.169 ### Java_TCPIP_Socket编程知识点概述 #### 第1章 简介 - **计算机网络、分组报文和协议**: - **计算机网络**:由多台计算机及其相关设备组成的,通过通信介质和软件协议连接起来的系统,使得这些计算机能够互相交换信息和共享资源。 - **分组报文**:在网络中传输的数据被分成一系列的包或报文,每个报文包含了数据以及必要的控制信息。 - **协议**:指定了不同系统之间通信的规则和标准,确保数据正确无误地传递。 - **关于地址**: - IP地址:用来标识网络中的每一个节点,分为IPv4和IPv6。 - 端口号:用来标识计算机上的具体服务或进程,通常范围为0-65535。 - **关于名字**: - DNS(Domain Name System):用于将易于记忆的名字映射到IP地址。 - **客户端和服务器**: - **客户端**:请求服务的一方,如浏览器或其他应用程序。 - **服务器**:提供服务的一方,响应客户端的请求。 - **什么是套接字**: - **套接字**:在网络通信中,是一种用于连接两个网络程序并进行数据传输的接口。 #### 第2章 基本套接字 - **套接字地址**: - 包含IP地址和端口号,用于唯一标识网络中的通信端点。 - **TCP套接字**: - **TCP客户端**:主动发起连接,通过`Socket`类实例化对象,建立与服务器的连接。 - **TCP服务器端**:被动等待连接,使用`ServerSocket`类监听特定端口,接受客户端的连接请求。 - **输入输出流**:通过`InputStream`和`OutputStream`实现数据的读取和发送。 - **UDP套接字**: - **DatagramPacket类**:封装了UDP数据报的结构,包括源地址、目的地址和数据内容。 - **UDP客户端**:使用`DatagramSocket`创建客户端,通过`DatagramPacket`发送和接收数据。 - **UDP服务器端**:同样使用`DatagramSocket`创建服务器端,通过`DatagramPacket`接收客户端的数据,并作出响应。 #### 第3章 发送和接收数据 - **信息编码**: - **基本整型**:通过`DataOutputStream`和`DataInputStream`处理基本类型的编码和解码。 - **字符串和文本**:使用`BufferedReader`和`PrintWriter`处理文本数据的读写。 - **位操作:布尔值编码**:使用`DataInputStream`和`DataOutputStream`处理布尔值。 - **组合输入输出流**: - 通过组合多个输入输出流来处理复杂的数据格式。 - **成帧与解析**: - 成帧是指将数据组织成易于传输的形式,而解析则是将接收到的数据分解成原始形式。 - **Java特定编码**: - Java提供了多种方式来处理特定类型的数据编码,例如使用`ObjectInputStream`和`ObjectOutputStream`处理对象序列化。 - **构建和解析协议消息**: - **基于文本的表示方法**:如HTTP协议,使用文本格式来组织和解析消息。 - **二进制表示方法**:如二进制协议,采用更紧凑的二进制格式。 #### 第4章 进阶 - **多任务处理**: - **Java多线程**:使用`Thread`类或多线程库来实现并发处理。 - **服务器协议**:设计服务器端如何处理来自多个客户端的请求。 - **一客户一线程**:为每个客户端分配一个单独的线程来处理其请求。 - **线程池**:预先创建一定数量的线程,减少创建新线程的开销。 - **系统管理调度:Executor接口**:提供了一种更高级别的抽象来管理线程的执行。 - **阻塞和超时**: - `accept()`、`read()`和`receive()`方法的阻塞行为及如何设置超时来避免无限等待。 - **多接收者**: - **广播**:将数据同时发送给多个客户端。 - **多播**:将数据发送给特定组内的客户端。 - **控制默认行为**: - **Keep-Alive**:保持连接的活动状态。 - **发送和接收缓存区的大小**:调整缓冲区大小以优化性能。 - **超时**:设置超时时间。 - **地址重用**:允许重新使用已绑定过的地址。 - **消除缓冲延迟**:改善实时应用的性能。 - **紧急数据**:优先发送紧急数据。 - **关闭后停留**:关闭连接后的行为。 - **广播许可**:是否允许广播。 - **通信等级**:设置通信质量的级别。 - **基于性能的协议选择**:根据实际需求选择最合适的协议。 - **关闭连接**: - 如何优雅地关闭连接,释放资源。 #### 第5章 NIO - **为什么需要NIO?**: - NIO(New IO)是为了提高大量并发连接的处理效率而引入的新技术。 - 提供了非阻塞模式,允许在等待I/O操作完成的同时处理其他任务。 - **与Buffer一起使用Channel**: - **Buffer**:用于存储数据的容器。 - **Channel**:负责数据的读写操作。 - **Selector**: - 用于监听多个Channel的I/O事件,从而实现高效的并发处理。 - **Buffer详解**: - **Buffer索引**:用于追踪读写位置。 - **创建Buffer**:如何初始化和配置Buffer。 - **存储和接收数据**:使用Buffer进行数据的存储和接收。 - **准备Buffer**:使用`clear()`、`flip()`和`rewind()`方法准备数据。 - **压缩Buffer中的数据**:如何高效地利用Buffer的空间。 - **Buffer透视**:`duplicate()`和`slice()`等方法的使用。 - **字符编码**:处理不同字符集的转换。 - **流(TCP)信道详解**: - 对TCP通道的具体操作进行了详细说明。 - **Selector详解**: - **在信道中注册**:如何将信道注册到Selector中。 - **选取和识别准备就绪的信道**:如何识别哪些信道已经准备好进行读写操作。 - **信道附件**:附加额外信息到信道上,方便后续处理。 - **Selector小结**:总结Selector的核心概念和使用技巧。 - **数据报(UDP)信道**: - UDP通道的操作。 #### 第6章 深入剖析 - **缓冲和TCP**: - 分析缓冲机制在TCP中的作用及其影响。 - **死锁风险**: - 探讨在网络编程中可能导致死锁的情况,并提出相应的解决方案。 - **性能相关**: - 分析影响网络应用性能的因素。 - **TCP套接字的生存周期**: - **连接**:建立TCP连接的过程。 - **关闭TCP连接**:如何优雅地关闭TCP连接。 - **解调多路复用揭秘**: - 详细介绍多路复用技术的原理和实现方式。 这份文档覆盖了Java网络编程的基础知识到高级技术,从TCP/UDP协议的基本概念到使用Java语言进行网络编程的具体实践,是一份非常全面的学习材料。对于想要深入了解Java网络编程的开发者来说,这些知识点将是宝贵的参考资料。
- 粉丝: 412
- 资源: 14
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 工作记忆动力学的漂移扩散模型Matlab代码.rar
- 光学定轨采用的高斯方法Matlab源码.rar
- 化工热力学计算,主要利用SRK方程计算混合气体组分逸度Matlab代码.rar
- 海浪模拟研究程序——线性叠加法 三维随机海浪的模拟研究Matlab代码.rar
- 化工热力学中UNIFAC模型Matlab实现.rar
- 混合垂直起降无人机matlab代码.rar
- 机器学习技术的理论与实践,包括监督学习、无监督学习、强化学习和多代理系统Matlab代码.rar
- 基于MATLAB的执行PLSR和双向PLSDA的工具包.rar
- 基于MATLAB的噪声消除系统.rar
- 基于EKF滤波陀螺仪和磁强计测量的方向估计卡尔曼滤波器Matlab代码.rar
- 基于matlab环境污染动态分析及治理方案设计 matlab代码.rar
- 基于扩展卡尔曼滤波器(EKF)的定位系统。利用MATLAB对该滤波器进行了实现和评价.rar
- 基于电池阻抗和无迹卡尔曼滤波器 (UKF) 的健康状态 (SOH) 估计器Matlab代码1.rar
- 基于python开发的结合姿态识别实现的切水果小游戏(源码)
- 基于实例的强化学习状态识别Matlab实现.rar
- 基于强化学习的六轴臂自主避障路径规划Matlab代码.rar
- 1
- 2
- 3
前往页