
计算机网络
抖抖认真了
要成为合格的程序员
展开
-
I\O复用,同时处理tcp和udp
这里的实现,是看的高性能服务器编程,里面的实现就是将tcp_socket和udp_socket挂到epoll_event里面,然后当epoll_wait有事件时,从而分别判断fd是tcp_socket还是udp_socket,然后分别进行accept和recvfrom,将得到的连接挂到epoll_event里面。当然如果要处理多个tcp连接,就得创建多个tcp_socket,然后挂到epoll_e...原创 2020-03-03 15:33:05 · 263 阅读 · 0 评论 -
epoll的(LT)条件触发和(ET)边缘触发
下面是二者的定义:条件触发(LT):只要输入缓冲有数据就会一直通知该事件边缘触发(ET):输入缓冲收到数据时仅注册1次该事件,即使输入缓冲中还留有数据,也不会再进行注册从而我要说明的是,为什么要强调边缘触发要使用非阻塞IO;因为在服务器端当epoll_wait监听到有客户端fd可读写时,那么就只会返回这一次,但是并不知道此fd有多少数据可读的,如果一直读到没有数据时,那么就会使得服...原创 2020-01-04 23:15:20 · 437 阅读 · 0 评论 -
select多路复用的原理和简单查看内核源码
写这篇文章,需要感谢这位老哥提供的资源,好让我较为轻易的了解了select的实现原理和以此带来的弊处select用法&原理详解(源码剖析)首先,了解一下为什么要在服务器端使用多路复用:当服务器出现要与多个客户端进行连接时,那么有下面几种办法: 1.多进程当监听的时候来了一个新的请求时,一旦建立了一个连接,就会有一个已连接 Socket,这时候你可以创建一个子进程,然...原创 2019-12-08 17:15:53 · 562 阅读 · 0 评论 -
关于epoll的实现--简单概要
上篇讨论select时,我们总结到:总结:从上面看,在第一次所有监听都没有事件时,调用 select 需要把进程挂到所有监听的文件描述符一次 有事件到来时,不知道是哪些文件描述符有数据可以读写,需要把所有的文件描述符都轮询一遍才能知道 可以从流程图中看出,需要进行bitmap的用户态到内核态的多次拷贝,以及对此集合的操作 在没有超出时间限制时,就会进行死循环,一次次的监听,此时...原创 2020-01-02 23:14:35 · 351 阅读 · 0 评论 -
完全理解ICMP协议
1.ICMP出现的原因在IP通信中,经常有数据包到达不了对方的情况。原因是,在通信途中的某处的一个路由器由于不能处理所有的数据包,就将数据包一个一个丢弃了。或者,虽然到达了对方,但是由于搞错了端口号,服务器软件可能不能接受它。这时,在错误发生的现场,为了联络而飞过来的信鸽就是ICMP 报文。在IP 网络上,由于数据包被丢弃等原因,为了控制将必要的信息传递给发信方。ICMP 协议是为了辅助IP ...转载 2019-11-04 12:05:32 · 1017 阅读 · 0 评论