本节介绍下最经典的服务器模型,C/S模型(即client/server, 客户端/服务端模型),并且使用TCP连接,模型如下图所示。 TCP/IP协议在设计和实现并没有区分客户端和服务端,通信双方其实地位相同,但是因为很多数据(比如新闻、音乐、视频)均由公司集中提供,比如我们看腾讯视频的时候,腾讯服务端负责提供相关视频资源,因此有了客户端和服务端之分,很多客户端可以访问服务端访问资源。
采用C/S模型的TCP客户端和TCP服务器工作流程,如下图所示。
结合上述几个章节,其实C/S模型逻辑十分简单明了。
解释如下:
服务端工作流程如下:
调用socket函数创建套接字(socket)。
调用bind函数给创建的套接字,分配IP地址和端口(bind)。
调用listen函数进行监听,等待客户端连接(listen)。
等待客户请求到来: 当请求到来后,调用accept函数接受连接请求,返回一个对应于此次连接的新的套接字,做好相互通信准备(accept)。
调用write/read或send/recv进行数据的读写,通过accept返回的套接字和客户端进行通信.
关闭socket(close)。
客户端工作流程如下:
调用socket函数创建套接字(socket)。
调用connect函数连接服务端(connect)。
调用write/read或send/recv进行数据的读写。
关闭socket(close)。