浅谈服务器的C/S模型
来源:互联网 发布:php做app 编辑:程序博客网 时间:2024/05/17 05:19
过去的一年,做了几个基于C/S模型的客户端和服务器,C/S模型就是“客户端/服务器”模型的简写。基于分享就是最好的学习,所以对其进行回顾是很有必要的。
其实,TCP/IP协议在设计和实现上并没有客户端和服务器概念的区分,它们在通信过程中所有的机器是对等的。但在实际的应用中,尤其是在互联网中,很多数据都被数据提供者所垄断,使得很多网络应用程序不得不采用C/S模型:所有的客户端都通过访问服务器来获取所需的资源。
服务器的工作逻辑为:启动服务器后,首先创建一个或几个监听socket,并调用bind函数将其绑定到服务器感兴趣的端口上,然后调用listen函数等待客户连接。
客户端的工作逻辑为:在服务器稳定运行后,客户端就可以调用connect函数向服务器发起连接了。
由于客户连接请求是随机到达的异步事件,服务器需要使用某种I/O模型来监听这一事件,Linux下实现I/O复用的系统调用主要由select, poll和epoll。
当监听到连接请求后,服务器就调用accept函数接受它,并分配一个逻辑单元为新的连接服务。逻辑单元可以是新创建的子进程、子线程或者其他。上图分配的是fork系统调用创建的子进程。逻辑单元读取客户请求,处理后将结果返回给客户端。服务器在处理一个客户请求的同时还会监听其他客户请求,上图通过select系统调用实现。
小结:C/S模型非常适合资源相对集中的场合,实现也比较容易,但其缺点是当访问量过大时,可能造成对所有的客户端响应都很慢。
0 0
- 浅谈服务器的C/S模型
- 简单的Boost::asio 高性能C/S服务器模型
- 服务器模型——C/S模型和P2P模型
- C/S通信---服务器IO多路复用模型之select的使用
- C/S通信---服务器IO多路复用模型之poll的使用
- C/S通信---服务器IO多路复用模型之epoll的使用
- 【boost】简单的Boost::asio 高性能C/S服务器模型
- 取经之路------浅谈C/S与B/S架构模型
- 最简单的socket c/s模型
- Socket创建C/S模型的小结
- 基于XML的三层C/S模型
- 基于XML的三层C/S模型
- 基于C/S模型的java实现
- Activity的管理模型,C/S交互
- 基于tcp的C/S模型
- 关于b/s与c/s模型的理解
- python C/S模型
- C/S模型
- 暴力的枚举法[奥数等式]
- 百度分享
- 基于项目的操作系统学习
- SQLITE机制
- Android Studio 中的单元测试译文
- 浅谈服务器的C/S模型
- 解决Android模拟器不能再次导入资源文件的问题
- 解决Android模拟器不能再次导入资源文件的问题
- CSDN越来越不稳定之二
- HTTP Request header
- 满满的负能量......
- C++中overload,override,overwrite的区别详细解析
- WinCE流接口驱动工作原理
- Android 视频截图方法