Linux网络编程入门 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

本节介绍下最经典的服务器模型,C/S模型(即client/server, 客户端/服务端模型),并且使用TCP连接,模型如下图所示。 TCP/IP协议在设计和实现并没有区分客户端和服务端,通信双方其实地位相同,但是因为很多数据(比如新闻、音乐、视频)均由公司集中提供,比如我们看腾讯视频的时候,腾讯服务端负责提供相关视频资源,因此有了客户端和服务端之分,很多客户端可以访问服务端访问资源。

采用C/S模型的TCP客户端和TCP服务器工作流程,如下图所示。

6

结合上述几个章节,其实C/S模型逻辑十分简单明了。

解释如下:

7

服务端工作流程如下:

  1. 调用socket函数创建套接字(socket)。

  2. 调用bind函数给创建的套接字,分配IP地址和端口(bind)。

  3. 调用listen函数进行监听,等待客户端连接(listen)。

  4. 等待客户请求到来: 当请求到来后,调用accept函数接受连接请求,返回一个对应于此次连接的新的套接字,做好相互通信准备(accept)。

  5. 调用write/read或send/recv进行数据的读写,通过accept返回的套接字和客户端进行通信.

  6. 关闭socket(close)。

客户端工作流程如下:

  1. 调用socket函数创建套接字(socket)。

  2. 调用connect函数连接服务端(connect)。

  3. 调用write/read或send/recv进行数据的读写。

  4. 关闭socket(close)。