一文带你了解Socket
在讲Socket之前,我们先来了解下OSI七层网络模型和TCP/IP四层模型的区别。
从本质上来说,这两者都是对一个网络通信过程的分层模型。只是两者分层时候的侧重点有所不同。
两者最大的不同是OSI是一个理论上的网络通信模型,而TCP/IP是实际运行的网络协议。
我们知道TCP/IP协议是互联网协议的统称,是通信的基础。它对网络通信制定了一系列相应的规则,提供了点对点的链接机制。除此之外,它还将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化。
OSI模型则是开放系统互联通信的参考模型。因为先有模型后进行实践,所以OSI是一个完整的宏观模型。
接下来,我们就来聊一下,什么是Socket。
Socket即套接字,是一个对 TCP / IP协议进行封装的编程调用接口(API)。它是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。
TCP/IP只是一个协议栈,必须要具体实现才能被使用。通过Socket接口,我们才可以使用TCP/IP协议。
我们也可以这样理解,Socket是支持TCP/IP协议的网络通信的基本操作单元,是对网络通信过程中端点的抽象表示。
在进行网络通信时,Socket包含了进行网络通信所必须的五种信息。如下:
连接所使用的的协议。
本地主机的IP地址。
本地远程的协议端口。
远程主机的IP地址。
远地进程的协议端口。
由此,我们可以得出Socket有如下几个特点:
1、通过Socket,我们才能子啊Andorid平台上通过TCP/IP协议进行开发。
2、Socket不是一种协议,而是一个变成调用接口(API)
3、成对出现,一对套接字
下面,我们简单了解下Socket通信模型。如图所示:
Socket通信步骤:
Step 1:创建ServerSocket和Socket
Step 2:打开连接到的Socket的输入/输出流
Step 3:按照协议对Socket进行读/写操作
Step 4:关闭输入输出流,以及Socket
Socket服务端的编写:
Step 1:创建ServerSocket对象,绑定监听的端口
Step 2:调用accept()方法监听客户端的请求
Step 3:连接建立后,通过输入流读取客户端发送的请求信息
Step 4:通过输出流向客户端发送响应信息
Step 5:关闭相关资源
Socket客户端的编写
Step 1:创建Socket对象,指明需要链接的服务器的地址和端号
Step 2:链接建立后,通过输出流向服务器发送请求信息
Step 3:通过输出流获取服务器响应的信息
Step 4:关闭相关资源