网络编程
sunmaoxiang
这个作者很懒,什么都没留下…
展开
-
非阻塞模型会造成CPU忙等为什么还要使用非阻塞模型
设想一个场景,用socket连接建立后,使用read来读取传来的所有数据直到对方close掉连接描述符,发来FIN包,如果使用非阻塞模型,写法是这样的while( read(fd, buf, n) != EOF ); 这样需要用where循环不断判断是否读完,读完才能推出循环,这虽然是同步非阻塞NIO模型但是不能发挥真实的威力。真正能发挥NIO威力的是使用IO多路复用 + 同步非阻塞IO比如使用一个阻塞的select/poll/epoll来监听read是否有新的数据到来,此时epoll要设置为水原创 2021-11-09 13:15:15 · 352 阅读 · 0 评论 -
gdb使用小结
break(b) + 行号 ——打断点run® --------运行到断点,start 跟run类似until + 行号,直接运行到那个位置,适合用于跳出循环print A 打印局部变量(栈)中的数据printf *A 用于取地址A中的数据,可以打印堆中的数据bt 查看栈中函数的调用情况how follow-fork-mode child / panrent适合在fork之前使用,确保进入子进程还是父进程info locals查看所有局部变量info threads 查看所有线程thre原创 2021-10-22 11:46:43 · 114 阅读 · 0 评论 -
select I/O多路复用的一个web server例子
8080,8989端口可以连接多个客户端,然后在本地创建连接套接字,用select监听这些套接字的读写,同时select也监听着来自绑定了8080和8989两个端口的监听套接字,当有连接来了可以处理,用set维护着已连接套接字。#include <sys/select.h>#include <sys/time.h>#include <netinet/in.h>#include <sys/socket.h>#include <stdio.h>原创 2021-10-09 18:36:21 · 110 阅读 · 0 评论