1.4委托协议栈发送消息
数据收发操作概览
- 向操作系统内部的协议栈发出委托时,需要安装指定顺序来调用socket库中的程序组件
- 嵌套字:管道数据的出入口
收发数据的步骤:
- 创建嵌套字(创建嵌套字阶段)
- 将管道连接到服务器的嵌套字上(连接阶段)
- 收发数据(通信阶段)
- 断开管道并删除嵌套字(断开阶段)
创建嵌套字阶段
客户端创建嵌套字:调用Socket库中socket程序组件,创建嵌套字。
嵌套字创建完之后,协议栈会返回一个描述符
- 同一台计算机可以同时存在多个嵌套字,所以需要描述符来识别特定的嵌套字。
应用程序通过描述符这一类似号码牌的东西来识别嵌套字。
连接阶段
调用Socket库中的connect程序组件,协议栈就会连接成功。
调用connect需要指定三个参数
- 描述符:connect根据描述符识别响应的嵌套字去和服务端的嵌套字连接
- IP地址:服务端的IP地址
- 端口:服务端的端口,用来让通信的另一方识别出嵌套字的机制
-
描述符 应用程序识别嵌套字的机制 IP、端口 客户端和服务端来识别嵌套字的机制
通信阶段
调用Socket库中的write程序组件来完成传递信息。
- 调用write程序时,需要指定描述符和发送数据。
调用Socket库中的read程序组件来完成收到信息。
- 调用read程序时,需要指定用于接收响应信息的内存地址(接收缓冲区)
断开阶段
调用Socket库中的colse程序组件来完成断开,
- 嵌套字直接的管道会断开,嵌套字本身会被删除。