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

如何修改用织梦做的网站的模板app 网站运营ppt

如何修改用织梦做的网站的模板,app 网站运营ppt,百度seo搜索引擎优化,亿网科技官网写在前面 Linux网络编程我是看视频学的#xff0c;Linux网络编程#xff0c;看完这个视频大概网络编程的基础差不多就掌握了。这个系列是我看这个Linux网络编程视频写的笔记总结。 高并发服务器 问题#xff1a; 根据上一个笔记#xff0c;我们可以写出一个简单的服务端…写在前面 Linux网络编程我是看视频学的Linux网络编程看完这个视频大概网络编程的基础差不多就掌握了。这个系列是我看这个Linux网络编程视频写的笔记总结。 高并发服务器 问题 根据上一个笔记我们可以写出一个简单的服务端和客户端通信但是我们发现一个问题——服务器只能连接一个客户端。然而在实际生活中我们发现一个服务器连接的客户端远远不止一个所以我们就要做一个高并发服务器。 解决方法 回看之前的代码之所以只能一对一通信是因为服务器只有一次执行accept的机会一旦建立连接成功就会去进行通信处理业务而其他想要建立连接的服务器就没办法建立连接。因此我们想到在Linux系统编程中学的进程和线程我们可以让父进程主线程去监听一定有客户端请求建立连接我们就创建子进程其他线程去和客户端建立连接进行通信父进程主线程继续监听。 多进程并发服务器 思路(步骤 前期准备工作 先用socket()生成一个套接字lfd用来监听用bind()对第一步生成的套接字绑定地址结构绑的是服务器的地址结构用listen()函数设置lfd的监听上限最大是128. 进入循环accept与客户端建立连接得到用于通信的套接字的文件描述符cfdfork()创建子进程对于父进程由于父进程只是监听不需要与客户端进行通信所以我们就关闭cfd注册信号捕捉函数用来回收子进程然后一直循环监听。对于子进程由于子进程只是进行通信不需要监听所以我们就关闭lfd然后就与客户端进行通信处理业务。 源代码 #includestdio.h #includestring.h #includectype.h #includestdlib.h #includeunistd.h #includesys/socket.h #includearpa/inet.h #includesignal.h#define PORT 6666void sys_err(char* str) {perror(str);exit(-1); }void wait_child(int signum) //信号捕捉回收子进程 {while((waitpid(0,NULL,WNOHANG))0); // if(waitpid(0,NULL,0)!-1) // printf(disconnect a client successfully\n);return; }int main() {struct sockaddr_in addr_s,addr_c;socklen_t addr_c_lensizeof addr_c;int lfd,cfd,res,n;pid_t pid;struct sigaction act;char buf[BUFSIZ],client_IP[1024];lfdsocket(AF_INET,SOCK_STREAM,0);if(lfd0)sys_err(socket error);addr_s.sin_familyAF_INET;addr_s.sin_porthtons(PORT);addr_s.sin_addr.s_addrhtonl(INADDR_ANY);resbind(lfd,(struct sockaddr*)addr_s,sizeof addr_s);if(res-1)sys_err(bind error);reslisten(lfd,128);if(res-1)sys_err(listen error);while(1){cfdaccept(lfd,(struct socket*)addr_c,addr_c_len);pidfork(); //创建子进程if(pid0) //子进程{close(lfd); //打印客户端的IP和端口号可以省略printf(connect successfully,client IP:%s,port:%d\n,inet_ntop(AF_INET,addr_c.sin_addr.s_addr,client_IP,sizeof client_IP),ntohs(addr_c.sin_port));break;}else if(pid0){close(cfd);act.sa_handlerwait_child;sigemptyset(act.sa_mask);act.sa_flags0;sigaction(SIGCHLD,act,NULL);continue;}}if(pid0) //父进程{while(1){nread(cfd,buf,sizeof buf);for(int i0;in;i)buf[i]toupper(buf[i]);write(cfd,buf,n);write(STDOUT_FILENO,buf,n);}}close(cfd);close(lfd);return 0; }效果 多线程并发服务器 思路步骤 前期准备工作 先用socket()生成一个套接字lfd用来监听用bind()对第一步生成的套接字绑定地址结构绑的是服务器的地址结构用listen()函数设置lfd的监听上限最大是128. 进入循环accept与客户端建立连接得到用于通信的套接字的文件描述符cfd创建子线程对于子线程由于子线程只是进行通信不需要监听所以我们就关闭lfd然后就与客户端进行通信处理业务。对于父进程由于父线程只是监听不需要与客户端进行通信所以我们就关闭cfd然后设置线程pthread_detach()分离或者使用pthread_join()回收子线程。 源代码 #includestdio.h #includestdlib.h #includestring.h #includectype.h #includeunistd.h #includesys/socket.h #includearpa/inet.h #includepthread.h#define PORT 6666void sys_err(char* str) {perror(str);exit(-1); }void* fun(void* arg) {int cfd(int) arg,n;char buf[BUFSIZ];while(1){nread(cfd,buf,sizeof buf);if(n0){printf(one client closed......\n);break;}for(int i0;in;i)buf[i]toupper(buf[i]);write(cfd,buf,n);write(STDOUT_FILENO,buf,n);}close(cfd);return NULL; }int main() {struct sockaddr_in addr_s,addr_c;socklen_t addr_c_lensizeof addr_c;char c_IP[1024];int lfd,cfd,res;pthread_t tid;addr_s.sin_familyAF_INET;addr_s.sin_porthtons(PORT);addr_s.sin_addr.s_addrhtonl(INADDR_ANY);lfdsocket(AF_INET,SOCK_STREAM,0);if(lfd0)sys_err(socket errro);resbind(lfd,(struct sockaddr*)addr_s,sizeof addr_s);if(res0)sys_err(bind error);reslisten(lfd,128); if(res0)sys_err(listen error);printf(accepting connect........\n);while(1){cfdaccept(lfd,(struct sockaddr*) addr_c,addr_c_len);if(cfd-1)sys_err(accept error);printf(connect successfully,client ip:%s,port:%d\n,inet_ntop(AF_INET,addr_c.sin_addr.s_addr,c_IP,sizeof c_IP),ntohs(addr_c.sin_port));respthread_create(tid,NULL,fun,(void*)cfd);if(res!0)fprintf(stderr,pthread create error:%s,strerror(res));pthread_detach(tid); if(res!0)fprintf(stderr,pthread create error:%s,strerror(res));}close(lfd);return 0; }效果 写在最后 个人亲身经验我们学习的一系列Linux命令一定要自己亲手去敲。不要只是看别人敲代码不要只是停留在眼睛看脑袋以为自己懂了等你实际上手去敲会发现许许多多的这样那样的问题。毕竟“实践出真知”。 如果你觉得我写的题解还不错的请各位王子公主移步到我的其他题解看看 数据结构与算法部分还在更新中 C STL总结 - 基于算法竞赛强力推荐动态规划——01背包问题动态规划——完全背包问题动态规划——多重背包问题动态规划——分组背包问题动态规划——最长上升子序列LIS)二叉树的中序遍历三种方法最长回文子串最短路算法——DijkstraC实现最短路算法———Bellman_Ford算法C实现最短路算法———SPFA算法C实现最小生成树算法———prim算法C实现最小生成树算法———Kruskal算法C实现染色法判断二分图C实现 Linux部分还在更新中 Linux学习之初识LinuxLinux学习之命令行基础操作Linux学习之基础命令适合小白Linux学习之权限管理和用户管理Linux学习之制作静态库和动态库Linux学习之makefileLinux学习之系统编程1关于读写系统函数Linux学习之系统编程2关于进程及其相关的函数Linux学习之系统编程3进程及wait函数Linux学习之系统编程4(进程间通信Linux学习之系统编程5(信号Linux学习之系统编程6(线程Linux学习之系统编程7(线程同步/互斥锁/信号量/条件变量Linux学习之网络编程纯理论Linux学习之网络编程2socket简单C/S模型 ✨总结 “种一颗树最好的是十年前,其次就是现在” 所以, “让我们一起努力吧,去奔赴更高更远的山海” 如果有错误❌,欢迎指正哟 如果觉得收获满满,可以动动小手,点点赞,支持一下哟
http://www.pierceye.com/news/81692/

相关文章:

  • 枫树seo网河北网站推广优化
  • 网站如何做关健词收录北京市建设工程信息网查询
  • 惠阳东莞网站建设免费建购物网站
  • 广州市南沙区基本建设办公室网站装潢设计属于什么专业类别
  • 网站建设三要素小制作小发明手工图片
  • 做电影网站赚钱设计欣赏心得体会
  • 建网站网站的主题与风格说明
  • 织梦批量修改网站源代码做网站编辑前景
  • 品牌形象网站建设烟台网站建设公司
  • 自建网站平台可以实现哪些功能wordpress wp_user_query
  • 深圳招聘网站前十排名wordpress 怎么加速
  • 上海建溧建设集团有限公司网站中交路桥建设有限公司官网
  • 动画网站建设网站建设信息安全要求
  • 网站开发翻译响应式网页设计方法
  • 上海网站建设代国内永久免费crm系统破解
  • 苏州seo整站优化企鹅自媒体平台注册
  • 东莞seo建站怎么投放中英文网站后台
  • 网站如何才能被百度收录可以做投票的网站
  • 卡车行业做网站的用途网站关键词设置数量
  • 做竞价网站服务器多少钱做网站广告费
  • 网站维护项目东莞广告公司东莞网站建设
  • 最好的响应式网站律师做网站
  • wordpress站标签也打不开公司网站设计策划案
  • 做网站要什么知识网络广告投放公司
  • 成都网站建设网络宁波外贸网站推广
  • 铜陵市市住房和城乡建设局网站程序员联系方式
  • 知企业网站怎么打不开cms网站开发教程
  • dede 网站目录ppt资源网免费
  • 自动的小企业网站建设网站建设所用系统
  • 现在最常用网站开发工具一点一创平面设计