暑期学习:自学java第二十九天
第十七章笔记整理:
一、网络编程基础
网络基础:计算机网络是将分布在不同地理位置的计算机与外部设备互连,实现资源共享和信息传输的系统。互联网主要基于 TCP/IP 协议进行通信。
IP 地址和端口:IP 地址用于唯一标识网络中的通信实体,端口号则用于标识实体上的具体应用程序。IP 地址和端口号结合,可以准确定位到网络中的目标程序。
二、Java 的基本网络工具
InetAddress 类:该类在 Java 中用于表示 IP 地址,提供了获取主机名、测试网络连通性等方法。
URL 和 URLConnection:URL 代表统一资源定位符,即网址。URLConnection 类用于建立与 URL 的连接,可以发送请求(如 GET、POST)并读取远程资源的数据,支持实现多线程下载。
URLDecoder 和 URLEncoder:这两个工具类用于在普通字符串和 application/x-www-form-urlencoded MIME 字符串之间进行转换,以解决 URL 中包含中文等非西欧字符时的编码问题。
三、TCP 协议编程TCP 协议:一种可靠的、面向连接的协议,通信前需建立连接,通过重发机制保证数据准确无误地传输。
ServerSocket 和 Socket:TCP 编程的核心类。ServerSocket 用于服务器端,监听客户端的连接请求;Socket 用于客户端,连接服务器。连接建立后,双方通过输入/输出流进行通信。
多线程通信:为实现服务器与多个客户端的并发通信,通常为每个客户端连接启动一个独立的线程进行处理。
半关闭 Socket:通过 shutdownInput() 或 shutdownOutput() 方法可以单独关闭 Socket 的输入流或输出流,表示数据发送完毕但仍可接收数据,适用于 HTTP 等一次性通信场景。
NIO 非阻塞通信:一种高效的通信模式,使用 Selector(选择器)来管理多个 Channel(通道),当某个通道有 I/O 操作时才进行处理,避免了为每个连接创建线程的开销。
AIO 异步通信:Java 7 引入的异步 I/O,比 NIO 更进一步。发起 I/O 请求后,线程无需等待,操作系统完成 I/O 操作后会通过回调函数通知应用程序。
四、UDP 协议编程(快速的广播)
UDP 协议:一种不可靠的、无连接的协议,传输效率高,但不保证数据一定能送达。适用于对实时性要求高、能容忍少量丢包的场景,如网络游戏、视频会议。
DatagramSocket 和 DatagramPacket:UDP 编程的核心类。DatagramSocket 负责发送和接收数据报,DatagramPacket 则封装了数据、目标 IP 和端口等信息。
MulticastSocket 多点广播:DatagramSocket 的子类,支持向一个组播 IP 地址发送数据,所有加入该组的成员都能接收到,常用于实现局域网聊天室等功能。
五、使用代理服务器
Proxy 类:代表一个代理服务器。在创建 URLConnection 或 Socket 连接时,可以指定一个 Proxy 对象,使网络请求通过代理服务器转发。
ProxySelector 类:一个更智能的代理选择器,可以根据预设规则(如目标地址)自动决定是否使用代理以及使用哪个代理服务器。

浙公网安备 33010602011771号