当前位置: 首页 > news >正文

如何使用win2008iis建设网站蝶恋直播视频下载

如何使用win2008iis建设网站,蝶恋直播视频下载,编程课有必要学吗,餐饮装修公司多进程并发服务器 设计流程 框架一#xff08;使用信号回收僵尸进程#xff09; void handler(int sig) {while(waitpid(-1, NULL, WNOHANG) 0); }int main() {//回收僵尸进程siganl(17, handler);//创建服务器监听套接字 serverserver socket();//给服务器地址信息…多进程并发服务器 设计流程 框架一使用信号回收僵尸进程 void handler(int sig) {while(waitpid(-1, NULL, WNOHANG) 0); }int main() {//回收僵尸进程siganl(17, handler);//创建服务器监听套接字 serverserver socket();//给服务器地址信息结构体赋值并绑定bind();//监听指定端口设置监听队列listen();while(1){//创建与客户端通信的套接字client accept();//创建子进程if(fork() 0){//关闭拷贝的服务器套接字close(server);while(1){//接收消息recv();//发送消息send();}//通信结束关闭套接字close(client);//退出进程exit(0);}//关闭父进程的通信套接字close(client);}//服务器关闭close(server); }实例 #include stdio.h #include stdlib.h #include string.h #include unistd.h #include sys/stat.h #include sys/types.h #include sys/socket.h #include netinet/in.h #include arpa/inet.h #include sys/select.h #include sys/wait.h #include time.h #include fcntl.h #include pthread.h #include semaphore.h #include signal.h #include sys/ipc.h #include sys/msg.h #include sys/shm.h #include sys/sem.h #include errno.h#define LOG(s) printf([%s] {%s:%d} %s \n, __DATE__, __FILE__, __LINE__, s);void cil(int client, struct sockaddr_in caddr);void handler(int sig) {while(waitpid(-1, NULL, WNOHANG) 0); }int main(int argc, char *argv[]) {//回收僵尸进程signal(17, handler);//创建服务器int server -1;if((server socket(AF_INET, SOCK_STREAM, 0)) -1){LOG(socket error);return -1;}//给服务器地址信息结构体赋值并绑定struct sockaddr_in saddr {0};saddr.sin_family AF_INET;saddr.sin_port htons(8888);saddr.sin_addr.s_addr htonl(INADDR_ANY);if(bind(server, (struct sockaddr*)saddr, sizeof(saddr)) -1){LOG(bind error);return -1;}//监听指定端口设置监听队列if(listen(server, 5) -1){LOG(listen error);return -1;}puts(Tcp server start success);int client -1;struct sockaddr_in caddr {0};socklen_t len sizeof(caddr);pid_t pid -1;while(1){//创建与客户端通信的套接字if((client accept(server, (struct sockaddr*)caddr, len)) -1){LOG(accpet error);return -1;}printf([%s/%d] client已上线\n, inet_ntoa(caddr.sin_addr), ntohl(caddr.sin_port));//创建子进程if((pid fork()) 0){LOG(fork error);return -1;}else if(pid 0){cil(client, caddr);exit(0);}close(client);}close(server);return 0; }void cil(int client, struct sockaddr_in caddr) {char buf[128] ;int res 0;while(1){bzero(buf, sizeof(buf));if((res read(client, buf, sizeof(buf))) 0){LOG(read error);break;}else if(res 0){printf([%s/%d] client已下线\n, inet_ntoa(caddr.sin_addr), ntohl(caddr.sin_port));close(client);break;}printf([%s/%d] client: %s\n, inet_ntoa(caddr.sin_addr), ntohl(caddr.sin_port), buf);bzero(buf, sizeof(buf));strcpy(buf, ok);if(write(client, buf, sizeof(buf)) 0){LOG(write error);break;}}} 框架二使用孤儿进程机制避免僵尸进程产生 int main() {//创建服务器监听套接字 serverserver socket();//给服务器地址信息结构体赋值并绑定bind();//监听指定端口设置监听队列listen();while(1){//创建子进程if((pid fork()) 0){//子进程创建用于与客户端通信的clientclient accept();//创建孙进程if(pid fork() 0){while(1){//孙进程负责与客户端通信recv();send();}//通信结束关闭套接字close(client);//退出进程exit(0);}//子进程else if(pid 0){//关闭多余的文件描述符close(server);close(client);//退出子进程exit(0);}}//父进程else if(pid 0){//回收子进程while(waitpid() pid)}}//关闭文件描述符close(server); }实例 #include stdio.h #include stdlib.h #include string.h #include unistd.h #include sys/stat.h #include sys/types.h #include sys/socket.h #include netinet/in.h #include arpa/inet.h #include sys/select.h #include sys/wait.h #include time.h #include fcntl.h #include pthread.h #include semaphore.h #include signal.h #include sys/ipc.h #include sys/msg.h #include sys/shm.h #include sys/sem.h #include errno.h#define LOG(s) printf([%s] {%s:%d} %s\n, __DATE__, __FILE__, __LINE__, s);void deal_cil_msg(int client, struct sockaddr_in caddr);int main(int argc, char *argv[]) {//创建服务器socketint server 0;if((server socket(AF_INET, SOCK_STREAM, 0)) -1){LOG(socket error);return -1;}//绑定服务器IP和端口号//给地址信息结构体赋值struct sockaddr_in saddr {0};saddr.sin_family AF_INET;saddr.sin_port htons(8888);saddr.sin_addr.s_addr htonl(INADDR_ANY);if(bind(server, (struct sockaddr*)saddr, sizeof(saddr)) -1){LOG(bind error);return -1;}//监听对应的端口号if(listen(server, 5) -1){LOG(listen error);return -1;}puts(server start success);//创建用于与客户端通信的socketstruct sockaddr_in caddr {0};int client 0;socklen_t asize sizeof(caddr);pid_t pid -1;int status 0;while(1){//父进程只负责生儿子pid fork();if(pid 0){LOG(fork error);return -1;}//子进程负责创建通信socketif(pid 0){//创建用于与客户端通信的socketif((client accept(server, (struct sockaddr*)caddr, asize)) -1){LOG(accept error);return -1;}printf([%s/%d]client已上线\n, inet_ntoa(caddr.sin_addr), ntohs(caddr.sin_port));//孙进程负责通信pid fork();if(pid 0){LOG(fork error);return -1;}else if(pid 0){deal_cil_msg(client, caddr);close(client);exit(0);}else if(pid 0){close(server);close(client);//退出子进程exit(0);}}else if(pid 0){printf(wait child %d\n, pid);//父进程等待子进程结束准备收尸while(waitpid(pid, status, 0) pid){printf(Parent is over - child: %d, status %x\n, pid, status);}}}//关闭文件描述符close(server);return 0; }void deal_cil_msg(int client, struct sockaddr_in caddr) {//接收消息char buf[128] ;while(1){int len 0;bzero(buf, sizeof(buf));if((len recv(client, buf, sizeof(buf), 0)) 0){ LOG(recv error);}else if(len 0){printf([%s/%d]client已下线\n, inet_ntoa(caddr.sin_addr), ntohs(caddr.sin_port));break;}printf([%s/%d]client: %s\n, inet_ntoa(caddr.sin_addr), ntohs(caddr.sin_port), buf);bzero(buf, sizeof(buf));//发送消息strcpy(buf, ok);write(client, buf, len);}} 多线程并发服务器 设计流程 //线程参数结构体 typedef struct {int client;struct sockaddr_in caddr; } Client_msg;int main() {//创建服务器监听套接字 serverserver socket();//给服务器地址信息结构体赋值并绑定bind();//监听指定端口设置监听队列listen();while(1){//创建用于与客户端通信的套接字client accpet();//创建线程pthread_create();while(1){//读写//关闭文件描述符//退出线程}//解离线程pthread_detach();}//关闭文件描述符close(server); }实例 #include stdio.h #include stdlib.h #include string.h #include unistd.h #include sys/stat.h #include sys/types.h #include sys/socket.h #include netinet/in.h #include arpa/inet.h #include sys/select.h #include sys/wait.h #include time.h #include fcntl.h #include pthread.h #include semaphore.h #include signal.h #include sys/ipc.h #include sys/msg.h #include sys/shm.h #include sys/sem.h #include errno.h#define LOG(s) printf([%s] {%s:%d} %s \n, __DATE__, __FILE__, __LINE__, s);void* cil(void* arg);//线程参数结构体 typedef struct {int client;struct sockaddr_in caddr; } Cli_msg;int main(int argc, char *argv[]) {//创建服务器监听分套接字 serverint server -1;if((server socket(AF_INET, SOCK_STREAM, 0)) -1){LOG(socket error);return -1;}//给服务器地址信息结构体赋值并绑定struct sockaddr_in saddr {0};saddr.sin_family AF_INET;saddr.sin_port htons(8899);saddr.sin_addr.s_addr htonl(INADDR_ANY);if(bind(server, (struct sockaddr*)saddr, sizeof(saddr)) -1){LOG(bind error);return -1;}//监听端口if(listen(server, 5) -1){LOG(listen error);return -1;}puts(tcp server start success);struct sockaddr_in caddr {0};socklen_t len sizeof(caddr);pthread_t tid -1;int client -1;Cli_msg cli_msg;while(1){//创建用于与客户端通信的套接字 clientif((client accept(server, (struct sockaddr*)caddr, len)) -1){LOG(accept error);return -1;}printf([%s/%d]client已上线\n, inet_ntoa(caddr.sin_addr), ntohs(caddr.sin_port));cli_msg.client client;cli_msg.caddr caddr;//创建线程if(pthread_create(tid, NULL, cil, cli_msg) ! 0){LOG(pthread_create error);return -1;}pthread_detach(tid);}close(server);return 0; }void* cil(void* arg) {int client ((Cli_msg*)arg)-client;struct sockaddr_in caddr ((Cli_msg*)arg)-caddr;char buf[128] ;int res 0;while(1){bzero(buf, sizeof(buf));if((res read(client, buf, sizeof(buf))) 0){LOG(read error);break;}else if(res 0){printf([%s/%d]client已下线\n, inet_ntoa(caddr.sin_addr), ntohs(caddr.sin_port));close(client);pthread_exit(NULL);}printf([%s/%d]client: %s\n, inet_ntoa(caddr.sin_addr), ntohs(caddr.sin_port), buf);bzero(buf, sizeof(buf));strcpy(buf, ok);if(write(client, buf, sizeof(buf)) 0){LOG(write error);break;}}}
http://www.dnsts.com.cn/news/123039.html

相关文章:

  • 05网站一般通过中介找工作需要多少钱
  • 济宁手机网站建设公司财政局门户网站建设方案
  • 一个空间可以做几个网站吗阿里备案成功后怎么做网站
  • 自助建站网站系统旅游网的网站建设
  • 网站建设的价格网站域名备案后公示
  • 网站东莞优化建设球形网架公司
  • 网站商城建设员招聘信息店铺logo在线制作免费
  • 中国农业建设信息网站wordpress用户同步
  • 石家庄网站建设人员网站导航栏怎么做简单
  • 网站建设开发语言与平台招聘网站设计方案
  • 怎么用手机制作手机网站php招投标网站源码
  • 如何查询网站死链如何做网站开发
  • 张家港网站seo找网红推广一般怎么合作
  • 大气手机网站廊坊首页霸屏排名优化
  • 企业网站的形式婚纱摄影网站论文
  • 中山网站只设计荣耀手机官网旗舰店
  • 临沂做进销存网站如何自己开发app软件
  • wordpress数据库替换网址重庆网站seo案例
  • 企业网站建设计入什么科目怎样建设简单的网站
  • 做网站首页置顶多少钱个人怎么做网站页面
  • 织梦网站怎么做二级域名网站建设 三乐
  • 深圳做网站比较好网站功能说明怎么做
  • 网站信息化建设总结网络营销策划书300字
  • 宣传部网站建设方案网站设计与制作教程1
  • 什么叫宣传类网站网站建设详细教程视频教程
  • 怎么找网站 优帮云做it的在哪个网站找工作
  • 区块链网站开发价格长春长春网站建设网
  • 做网站要在工商备案吗晋州外贸网站建设
  • 建网站怎么赚流量移动端的网站模板
  • 工程网站开发网站后台作用