Socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交
换。
Socket通信模型

Socket通信实现步骤
- 创建ServerSocket和Socket
- 打开连接到Socket的输入/输出流
- 按照协议对Socket进行读/写操作
- 关闭输入输出流、关闭Socket
基于TCP的Socket通信
服务器端
|
|
客户端
|
|
输出结果
先运行服务器端,后运行客户端
|
|
多线程服务器
应用多线程来实现服务器和多客户端之间的通信
基本步骤
- 服务器创建ServerSocket,循环调用accept()等待客户端连接
- 客户端创建一个socket并请求和服务器端连接
- 服务器接收客户端请求,创建socket与该客户建立专线连接
- 建立连接的两个socket在一个单独的线程上对话
- 服务器端继续等待新的连接
服务器线程处理类
|
|
服务器端
|
|
客户端
为测试多线程添加一个客户端
输出结果
先运行服务器端,后运行客户端
localhost默认IP为127.0.0.1
|
|
基于UDP的Socket通信
UDP
UDP协议(用户数据协议)是无连接、不可靠的、无序的。
UDP协议以数据报作为数据传输的载体。
进行数据传输时,首先需要将要传输的数据定义成数据报(Datagram),在数据报中指明数据所要达到的
Socket(主机地址和端口号),然后再将数据报发送出去。
相关操作类
DatagramPacket:表示数据报包
DatagramSocket:进行端到端通信的类
服务器端实现步骤
- 创建DatagramSocket,指定端口号
- 创建DatagramPacket,接收客户端发送的数据
- 接收客户端发送的数据信息
- 读取数据
- 服务器端继续等待新的连接
客户端实现步骤
- 定义发送信息
- 创建DatagramPacket,包含将要发送的信息
- 创建DatagramSocket,实现数据发送
- 发送数据
服务器端
|
|
客户端
|
|
输出结果
|
|
|
|