各类资料学习下载合集
链接:https://pan.quark.cn/s/770d9387db5f
在网络编程的世界里,架构的选择决定了系统的“基因”。是选择打开浏览器就能用的B/S 架构,还是选择体验极致、功能强大的C/S 架构?本文将结合理论与代码实战,带你彻底搞懂这两者的区别。
一、 理论核心:两种架构的较量
1. B/S 架构 (Browser/Server)
- 定义:浏览器作为客户端,服务器提供 Web 服务。
- 典型应用:百度、淘宝网页版、OA 系统。
- 核心特点:
- 协议限制:必须严格遵守HTTP/HTTPS协议。
- 零客户端:用户无需安装专门软件,有浏览器即可。
- 弱本地能力:无法直接加载用户本地的大型资源(如3A游戏的几个G的材质包),过度依赖网络传输。
2. C/S 架构 (Client/Server)
- 定义:需要安装专门的客户端软件(Client),与服务器交互。
- 典型应用:QQ、英雄联盟、迅雷、大型专业软件。
- 核心特点:
- 协议自由:可以使用 TCP/UDP 自定义协议,甚至为了速度重新造轮子。
- 强本地能力:可以充分利用本地硬件(显卡、硬盘),预加载大量资源,只通过网络传输核心数据(如玩家坐标)。
- 开发成本高:需要针对 Windows、Mac、iOS、Android 开发不同的客户端。
二、 代码实战:一个服务器,两种体验
为了直观验证B/S 的协议限制和C/S 的自由性,我们编写一个简单的 TCP 服务器。它将分别接收来自浏览器的请求(B/S)和来自自定义客户端的请求(C/S),并打印收到的内容。
1. 服务器端代码 (server.c)
这个服务器监听 8080 端口,并打印它收到的所有数据。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<arpa/inet.h>#include<sys/socket.h>#definePORT8080#defineBUFFER_SIZE1024intmain(){intserver_fd,new_socket;structsockaddr_inaddress;intaddrlen=sizeof(address);charbuffer[BUFFER_SIZE]={0};// 1. 创建 Socketif((server_fd=socket(AF_INET,SOCK_STREAM,0))==0