首页 > 编程知识 正文

为什么让我认识了你(websocket实例)

时间:2023-05-03 15:08:07 阅读:98954 作者:198

本章内容:

插座我知道

Sokcet的通信连接过程

套接字数据传输过程

我所认识的Socket

Socket是应用层与TCP/IP协议族通信的中间软件抽象层(百度百科解释:网络上的两个程序通过双向通信连接交换数据,这种连接的一端称为Socket)。

1)网络通信支持TCP/IP协议的操作单元是TCP/IP协议的封装,它本身不是协议,而是调用接口(API)。

2)Socket位于应用层和传输层之间。您可以指定传输层使用的协议,如传输控制协议或用户数据报协议

3)一旦3)Socket连接,双方可以互相发送数据(推送),直到连接断开。

4)因为网络通信要经过很多中间节点,比如路由器、网关、防火墙等。尽管Socket是一个长时间的连接,但大多数防火墙默认情况下会关闭长时间不活动的连接,从而导致Socket连接中断。

5)定期发送数据包(也称为心跳包),避免因长时间不活动而关闭Socket连接。

6)使用三元组(ip地址、协议、端口号)可以识别网络的进程。

7)如果一个程序创建了一个Socket,让它监听端口80(创建时会给它分配一个端口),它实际上是向TCP/IP协议栈声明自己占用了端口80,然后所有针对端口80的TCP数据包都会被转发给应用程序。

结构图

00-1010 1)服务器先初始化Socket,然后绑定到端口,监听端口,调用accept方法进行阻塞,等待客户端的连接。

2)客户端初始化套接字,然后连接到服务(连接)。如果连接成功(三次握手成功),则客户端与服务器建立连接。

3)客户端发送数据请求,服务器接收并处理请求,然后向客户端响应数据,客户端读取数据,最后关闭连接,第一次交互结束。

通信连接过程

00-1010 1)当连接成功时,客户端和服务器都将有一个scooter实例,每个实例都有一个InputStream和一个OutputStream,数据就是通过这两个对象类进行交换的。

2)网络输入输出操作通过字节流传输。创建Socket对象时,操作系统会分别为InputStream和OutputStream分配一定大小的缓冲区,通过缓冲区完成数据的写入和写入。

3)写入器将数据写入对应于输出流的发送队列。当队列已满时,数据将被发送到另一端输入流的RecvQ队列。

4)如果此时RecvQ队列已满,OutputStream的写方法将阻塞,直到RecvQ队列有足够的空间容纳SendQ发送的数据。

5)需要注意的是,缓冲区的大小、写入端的速度和读取速度对这个连接的数据传输效率影响很大,可能会导致传输拥塞。

安卓文章推荐

你可能误解了安卓系统中权限管理的这两个概念。

http://mp.weixin.qq.com/s/QK4O7EoZ3zMoBNi1VXUqKg

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。