Java中的网络支持
针对网络通信的不同层次,Java提供的网络功能有四大类
- InetAddress:用于标识网络上的硬件资源
- URL:统一资源定位符 通过URL可以直接读取或写入网络上的数据。
- Sockets:使用TCP协议实现网络通信的Socket相关的类
- Datagram:使用UDP协议,将数据保存在数据报中,通过网络进行通信。
InetAddress类
1 | import java.net.InetAddress; |
URL
- URL(Uniform Resoure Locator)统一资源定位符,表示Internet上某一资源的地址。
- URL有两个部分组成:协议名称和资源名称,中间用冒号隔开。
- 在java.net 包中,提供了URL类来表示URL。
1 | package com.webSocket; |
使用URL读取网页内容
- 通知URL对象的openStream()方法可以得到指定资源的输入流
- 通过输入流可以读取、访问网络上的数据。
1 | package com.webSocket; |
Socket通信
TCP协议是面向连接、可靠的、有序的,以字节流的方式发送数据
基于TCP协议实现网络通信的类
- 客户端的Socket类
- 服务器端的ServerSocket类
Socket通信实现步骤
- 创建ServerSocket和Socket
- 打开连接到Socket的输入/输出流
- 按照协议对Socket进行读/写操作
- 关闭输入输出流、关闭Socket
服务器端
- 创建ServerSocket对象,绑定监听端口
- 通过accept()方法监听客户端请求
- 连接建立后,通过输入流读取客户端发送的请求信息
- 通过输出流向客户端发送响应信息
- 关闭相关资源
客户端
- 创建Socket对象,指明需要连接的服务器的地址和端口号
- 连接建立后,通过输出流向服务器端发送请求信息
- 通过输入流获取服务器响应的信息
- 关闭相关资源
多线程服务器
应用多线程来实现服务器与多客户端之间的通信
基本步骤
- 服务器端创建ServerSocket,循环使用accept()等待客户端的连接
- 客户端创建一个Socket并请求和服务端连接
- 服务端接受客户端请求,创建socket与该客户建立专线连接
- 建立连接的两个socket在一个单独的线程对话
- 服务器端继续等待新的连接
客户端
1 | package com.webSocket; |
多线程类
1 | package com.webSocket; |
服务器
1 | package com.webSocket; |