当前位置: 技术问答>linux和unix
关于epoll的服务器模型
来源: 互联网 发布时间:2016-12-18
本文导语: 如果我服务器建立一个和客户端 client_fd的长链接。 我先初始化 client_fd的事件为EPOLLIN&EPOLLOUT.也就是既可以读,又可以写,然后我while(),问题来了 while() { 如果是客户端写事件,就是EPOLLOUT,我写完之后,然后就等待...
如果我服务器建立一个和客户端 client_fd的长链接。
我先初始化 client_fd的事件为EPOLLIN&EPOLLOUT.也就是既可以读,又可以写,然后我while(),问题来了
while()
{
如果是客户端写事件,就是EPOLLOUT,我写完之后,然后就等待从客户端读下一次数据,但是这个时候,服务器的while循环,一直告诉我客户端可以写了,却不能读进客户端的请求,不知道为什么,我之前已经设置了这个fd,既可以写又可以读了啊。
除非我在 每次写完之后,再设置一下 client_fd事件为可读才行, 求解答,难道初始化 一个事件既可以写又可以读不行?
}
我先初始化 client_fd的事件为EPOLLIN&EPOLLOUT.也就是既可以读,又可以写,然后我while(),问题来了
while()
{
如果是客户端写事件,就是EPOLLOUT,我写完之后,然后就等待从客户端读下一次数据,但是这个时候,服务器的while循环,一直告诉我客户端可以写了,却不能读进客户端的请求,不知道为什么,我之前已经设置了这个fd,既可以写又可以读了啊。
除非我在 每次写完之后,再设置一下 client_fd事件为可读才行, 求解答,难道初始化 一个事件既可以写又可以读不行?
}
|
EPOLLIN&EPOLLOUT ?
一般来说这种标志都是用 or的吧,才能正确设置相应的位。
EPOLLIN|EPOLLOUT 这样写才对?
提问题,最好把代码给放出来,这样别人看的仔细的一点,也可以测试学习一下,呵呵
一般来说这种标志都是用 or的吧,才能正确设置相应的位。
EPOLLIN|EPOLLOUT 这样写才对?
提问题,最好把代码给放出来,这样别人看的仔细的一点,也可以测试学习一下,呵呵