ZKX's LAB

linux多进程服务端代码 目前linux进程间通信的常用方法是什么(pipe?信号量?消息队列?)?

2021-04-05知识6

linux soket编程 服务端 为什么要两个套接字呢 套接字1调用listen()之后会由主动模式变为被动模式来接受客户端的请求,如果等待队列中有请求进来,accept()会返回一个新的套接字2来处理请求,套接字1则继续在端口上监听,套接字1和套接字2具有相同的属性。建立两个套接字的设计是为了使用起来更加直观,这就和线程池中,主线程用来接受请求,子线程处理请求差不多。个人理解,纯手打,如有错误,欢迎指出。

如何看懂《Linux多线程服务端编程 进程线程 每进程自独立址空间同进程同进程系统功能划重要决策点《Erlang程序设计》[ERL]进程比喻:每自记忆(内存)与通谈(消息传递)交流谈既面谈(同台服务器)电谈(同服务器中国络通信)面谈电谈区别于面谈立即知道否死(crash,SIGCHLD)电谈能通周期性跳判断否着 些比喻设计布式系统采取角色扮演团队几各自扮演进程角色由进程代码决定(管登录、管消息发、管买卖等等)每自记忆知道别记忆要想知道别看能通交谈(暂考虑共享内存种IPC)思考:·容错:万突死·扩容:新途加进·负载均衡:甲挪给乙做·退休:甲要修复bug先别派新任务等做完手事情重启 等等各种场景十便利 线程特点共享址空间高效共享数据台机器进程能高效共享代码段(操作系统映射同物理内存)能共享数据进程量共享内存等于进程程序线程写掩耳盗铃 线程价值我认更发挥核处理器(multi-cores)效能单核代线程没价值(想:要完任务CPU密集型线程没优势甚至线程切换销线程反更慢;要完任务既CPU计算磁盘或中国络IO则使用线程处某线程IO阻塞OS调度其线程执行虽效率确实要比任务顺序执行效率要高种类型任务通单线程non-blocking IO+IO multiplexing模型(事件驱)提高效率采用线程式带能仅仅编程简单已)Alan Cox说。

linux网络编程中如何实现服务器端多个read()和客户端write( ) TCP通信的模式如下图,比较固定,对着图编代码就可以了:服务器的main函数:int main(int argc,char*argv){int listenfd,connfd;pid_t childpid;socklen_t clilen;struct sockaddr_in cliaddr,servaddr;IPv4 addresssocket*/listenfd=socket(AF_INET,SOCK_STREAM,0);创建一个TCP的socketif(-1=listenfd){perror(\"socket erro.\");return-1;}bind*/首先初始化server的IP地址和端口,然后再与刚刚创建的socket绑定bzero(&servaddr,sizeof(servaddr));servaddr.sin_family=AF_INET;设置协议簇servaddr.sin_addr.s_addr=htonl(INADDR_ANY);绑定本机的网卡servaddr.sin_port=htons(1234);绑定端口号,端口号可以随便取,大于1024就可以了if(-1=bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr))){perror(\"bind error.\");return-1;}listen*/到这里已经有了一个绑定了IP地址和端口号的socket了,但是这个socket是个主动的socket,而作为server需要的是一个等待别的接入的被动的socket,所以得调用listen将这个socket设置为监听状态第二个参数表示服务器正在处理客户接入时的等待队列长度。if(-1=listen(listenfd,10)){perror(\"listen error。.

#linux多进程服务端代码

随机阅读

qrcode
访问手机版