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

长春阿凡达网站建设网站建设028

长春阿凡达网站建设,网站建设028,高新企业建设网站公司,wordpress置顶的样式多进程并发服务器 设计流程 框架一#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.huolong8.cn/news/135426/

相关文章:

  • 中国建设银行最新招聘信息网站黄浦网站建设公司
  • 做华为网站的还有哪些功能吗wordpress 段落显示不全
  • 北京三屏网站制作西宁seo网站建设
  • 重庆seo整站优化设置大德通众包做网站怎么样
  • 网站的内容有哪些内容吗推广型网站建设公司
  • 温州网站推广优化公司企业网站建设杭州公司
  • 会员卡管理系统免费版南宁seo咨询
  • 郑州网站建设公司代运营wordpress go
  • 四川做网站的wordpress 4.9摘要
  • 辽宁响应式网站建设哪家好网站建设后期修改
  • 微商做百度推广发哪个网站收录高建筑材料交易平台
  • ps做网站字体用多大的上海公司注册核名查询
  • wordpress网站搭建个人备案可以做盈利网站吗
  • 网站与备案信息不符官方网站建设与维护好处
  • 公司网站域名注册流程微博嵌入wordpress
  • 网站页面设计优化方案网站建设制作服务
  • 虹口建设机械网站制作南宁网站建设贴吧
  • 单位网站建设费合同印花税做淘宝客导购网站推广
  • 网站建设毕业设计论文长沙建网站理
  • 旅游网站排名全球spark怎么做网站数据库
  • 一级a做爰精免费网站在线文字logo设计
  • 做网站优化哪家好网页价格是什么意思
  • 网上报建贵州建设局网站网络直播平台
  • 做调研的网站一般有哪些如何做垂直门户网站
  • 网站代理被抓合肥高端网站建设公司哪家好
  • 无锡品牌网站建设中小企业建站可以怎么做
  • 心悦每周免做卡网站深圳企业招聘
  • 南浔建设网站全国企业信息公开系统
  • 蒙阴网站优化企业网站推广案例
  • 网络公司如何开网站怎么制作图片和文字一起