1、在网络编程的时候,有以下这些接口,
socket 、listen、 bind、 accept、recv、 send、 close、connect ````
请问有哪些接口,被调用的时候,会给对端发送一个数据呢?
send、connect、close
2、 epoll 需要检测哪些地方?
1)accept队列有了节点,即三次握手成功, 就会回调epoll
2)客户端发送数据到tcp协议栈的时候,且返回了ACK给客户端的时候,回调epoll
3)tcp协议栈调用了send函数, 给客户端发送消息之后 ,tcp协议栈收到了来自客户端的确认。 tcp协议栈把send_buf的空间里面的客户端已经确认收到的消息 对应的空间清空, 回调epoll。
4)客户端调用了close函数,回调了epoll
在这里epoll只关心哪个fd,status 状态和 epoll_fd(红黑树的代号)。
3、在用户态协议栈里面,为啥自己要实现一个epoll呢?
因为内核epoll是内核协议栈回调的。
既然把写了用户态协议栈TCP/IP的实现, 那么写一个用户态协议栈实现一个epoll。