IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【网络编程】第2章(2) 应用程序接口(API) -> 正文阅读

[系统运维]【网络编程】第2章(2) 应用程序接口(API)

前面那章介绍了客户-服务器的原理,下面就介绍客户-服务器编程的实现原理,之后要我们自己手动编代码来完成客户-服务器的通信过程

应用程序接口(API)

操作系统定义了应用程序和协议软件(TCP/IP)之间的接口——应用程序接口

我们要做的就是通过程序调用操作系统的应用程序接口,然后通过它而调用协议软件(TCP/IP)的接口来实现网络之间通信,也就是网络编程

应用程序接口要实现的功能:

  • 分配用于通信的本地资源;
  • 指定本地和远程通信端点;
  • (客户端)发起连接;
  • (客户端)发送数据报;
  • (服务器端)等待连接的到来;
  • 发送或接收数据;
  • 判断数据何时到达;
  • 产生紧急数据;
  • 处理到来的紧急数据;
  • 从容终止连接;
  • 处理来自远程端点的连接终止;
  • 异常终止通信;
  • 处理错误条件或连接异常终止;
  • 连接结束后释放本地资源;

网络通信的两种基本方法

设计者发明一种新的系统调用

设计者使用一般的I/O调用访问TCP/IP

套接字API

套接字就是Socket,接收所有需要通信参数后,调用系统调用的API,然后调用协议软件来进行网络通信,它本身封装了很多的方法,能够实现很多的通信中的功能

套接字API的实现提供了套接字系统调用所要使用的符号常量和数据结构声明

image-20220307215812931在套接字被使用前,创建该套接字的应用程序必须用其他系统调用把套接字数据结构中的信息填上

下面是通信流程

image-20220307220158741

创建套接字

retcode =socket( family, type, protocol )

  • 返回值:成功 0,失败 -1 errno 记录错误代码

  • Family:协议族

  • Type:流式套接字TCP或者数据报套接字UDP

  • protocol :具体的协议

连接请求 connect

retcode = connect( socket, addr, addrlen)

  • 返回值:成功 0,失败 -1

  • socket:创建的套接字

  • addr:请求连接的地址

  • addrlen:地址长度

绑定本地地址 bind

recode= bind( socket, localaddr, addrlen )

监听 listen

retcode = listen( socket, queuelen )

服务器使用listen使套接字处于被动状态

image-20220307221721178

accept

从请求队列取请求,返回新套接字描述符,也就是句柄

retcode = accept( socket, addr, addrlen )

套接字I/O操作

retcode = recvfrom(socket, buffer, buflen, flags, from, fromlen)

套接字的接收,和读文件类似

  • 返回值: 非0 所读字节数,-1 失败

retcode = sendto(socket, msg, msglen, flags, to, tolen)

套接字的发送,和写文件类似

  • 返回值: 非0 所写字节数,-1 失败

Close

retcode = close ( socket )

shutdown

retcode = shutdown ( socket , how)

how的取值及含义

说明
0shut_RD不允许本地socket进行读
1shut_WR不允许本地socket进行写
2shut_RDWR不允许本地socket进行读写

如何写得不错就点个赞吧,欢迎来我的个人博客网站😊www.liangyuanshao.top

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:59:52  更:2022-03-08 23:00:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:12:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码