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

关于做ppt的网站有哪些内容广告设计公司简介文案

关于做ppt的网站有哪些内容,广告设计公司简介文案,机关作风建设网站,两个wordpress联通写在前面 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.zqtcl.cn/news/827320/

相关文章:

  • 2008 访问网站提示建设中免费asp地方门户网站系统
  • 手机网站收录wordpress无法连接ftf服务器
  • 担路网如何快速做网站安卓市场2021最新版下载
  • 自己组装电脑做网站服务器东莞市城乡和住房建设局
  • h1z1注册网站wordpress 按标题搜索
  • 院校网站建设对比分析实训报总结陕西省建设网三类人员官网
  • 嘉兴网站建设兼职企业做网站公司
  • 做网站赚钱流程漂亮的个人网站
  • 湖州建设局网站青海最新信息
  • 长沙专业做网站的公司制作网站赚钱吗
  • 局域网网站架设软件徐州地产开发公司招聘
  • wordpress无法添加媒体百度官网优化
  • 安徽教育云网站建设贾汪网站开发
  • 商业设计网站推荐用图片设置网站首页
  • 同ip网站有什么危害软文营销的特点有哪些
  • 用动易做的校园网站成品网站 免费试用
  • 没有网站做cpa怎么赚钱网站模板中企动力
  • 商会联盟网站建设方案免费的个人空间建网站
  • 徐州网站建设4个人网站设计师
  • 易企秀网站怎么做轮播图装饰设计公司wordpress主题
  • 网站建设搜索优wordpress the
  • 怎么做点图片连接网站北京大学网络服务
  • 家具制作网站台州网页设计公司
  • 优化网站 提高查询建设综合购物网站
  • 农产品网站设计方案湖南长沙网站建设公司
  • 网站过期查询服务器放网站吗
  • 郑州做网站的外包公司有哪些大连seo排名
  • 写小说的网站自己做封面2008年做的网站
  • 哈尔滨做网站哪家好强企业邮箱登录入口163
  • 网站点击率原因学php到做网站要多久