网站开发与设计 课程简介,WordPress 整合源码,西安门户网站建设,网店推广方式怎么写一.服务器模型
1.支持多客户端访问
//单循环服务器 socket bind listen while(1) { accept while(1) { recv/send } } close 注#xff1a;该模式remvform为阻塞态#xff0c;服务器将等待接收数据 2..支持多客户端同时访问 (并发能力) socket…一.服务器模型
1.支持多客户端访问
//单循环服务器 socket bind listen while(1) { accept while(1) { recv/send } } close 注该模式remvform为阻塞态服务器将等待接收数据 2..支持多客户端同时访问 (并发能力) socket bind listen while(1) { connf accept pid_t pid fork(); //出错处理 if (pid 0) { while(1) //负责 与 客户端通信的 { recv/send } } } close 注将管道设置成非阻塞一直读取 读端设置非阻塞 //线程
void *handle_client(void *arg) { while(1) //子线程中 负责 与 客户端通信的 { recv/send } } socket bind listen while(1) { connf accept pthread_create(); //出错处理 } close
二三种服务器模型:
1.单循环服务器 2.并发服务器 进程 线程 1、简单循环服务器 http web 服务器apache--》cgiphpperlIIS--》aspNGIXNlighty while(1) { newfd accept(); recv(); close(newfd); } 特点可以接入多个客户端的信息。 缺点数据通信过程短客户端只能一次有效。 实时性效果差。 2、fork循环服务器每次有链接则fork一个子进程为该 链接处理通信过程父进程继续等待新链接。 while(1) { newfd accept(); pid fork() if(pid 0) { ///接收数据 } if(pid 0) { perror(fork); return -1; } waitpid() } 特点可以完成多个进程的实时交互信息的完整性可以保证。 缺点回收资源不方便每次fork 占用系统资源多。 可能出现僵尸进程 多线程: 特点: 创建速度快调度快 缺点: 线程共享进程资源稳定性安全性 较差 3.并发的服务器模型 ---更高程度上的并发 IO模型 阻塞IO 非阻塞IO 1、阻塞IO 用的最多。 读阻塞。 写阻塞。 2、非阻塞IO -1 errno EAGAIN whild(1){read()break;}忙等待 contro 注信号驱动IO 4.SELECT函数并发
#include unistd.h #include fcntl.h int fcntl(int fd, int cmd, ... /* arg */ ); 功能修改指定文件的属性信息。 参数fd 要调整的文件描述符 cmd 要调整的文件属性宏名称 ... 可变长的属性值参数。 返回值成功 不一定看cmd 失败 -1 int fcntl(int fd, int cmd, ... /* arg */ ); //驱动: //1.驱动程序 ---- 驱使硬件工作起来的程序 让灯亮起来 //2.应用程序 应用程序 led_ctnl(led_fd,ON ); led_ctnl(led_fd,OFF ); led_ctnl(led_ctnl,STREAM); //流水灯 eg修改文件的非阻塞属性 int flag ; flag fcntl(fd,F_GETFL,0); ///获取fd文件的默认属性到flag变量中。 flag flag | O_NONBLOCK; ///将变量的值调整并添加非阻塞属性 fcntl(fd,F_SETFL,flag); ///将新属性flag设置到fd对应的文件生效。 以上代码执行后的阻塞IO将变成非阻塞方式。