全部博文(20)
分类: C/C++
2010-04-02 15:44:38
画了个图,分析下tcp的状态在epoll中的表现。
我们假设在服务器端应用epoll,端口监听起来后加入epoll,epoll_wait返回应该是以下几种情况:
1.当服务器端收到了3次握手信号后epoll_wait返回,程序accept返回fd,accept是立即返回的;
2.当服务器检测到fd里有数据时返回,这个都没问题;
3.当服务器收到FIN M 分量后,epoll_wait返回,这时read=0,说明对方关闭。
以上都是个人猜测啊。
这里有个问题,也似猜测啊,客户端close后,程序退出,socket状态变成了FIN_WAIT_1,这个时候应该是已经把这个状态维护转交给内核了,程序已经退出不管了,要不然close会这么快。:-)
欢迎大家一起讨论。