【网络编程】第2章(2) 应用程序接口(API)

      最后更新:2022-03-08 11:55:34 手机定位技术交流文章

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

      应用程序接口(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的取值及含义

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

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

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/19714.html

          热门文章

          文章分类