qinguoyi / TinyWebServer

:fire: Linux下C++轻量级WebServer服务器
Apache License 2.0
16.94k stars 3.97k forks source link

客户端发完请求,半关闭连接,但是仍然想要接收回应,是不是没有正确处理这种情况 #168

Open liyuanze opened 2 years ago

liyuanze commented 2 years ago

else if (events[i].events & (EPOLLRDHUP | EPOLLHUP | EPOLLERR)) { //服务器端关闭连接,移除对应的定时器 util_timer *timer = users_timer[sockfd].timer; deal_timer(timer, sockfd); } 如果触发的事件是EPOLLRDHUP,代表对端关闭写,但是仍然可读,我们可以继续返回正确的响应,但是这里直接关闭了连接。

cellphonef commented 1 year ago

同问,请问知道如何解决了吗?

else if (events[i].events & (EPOLLRDHUP | EPOLLHUP | EPOLLERR)) { //服务器端关闭连接,移除对应的定时器 util_timer *timer = users_timer[sockfd].timer; deal_timer(timer, sockfd); } 如果触发的事件是EPOLLRDHUP,代表对端关闭写,但是仍然可读,我们可以继续返回正确的响应,但是这里直接关闭了连接。

同问,请问知道如何解决了吗

diandengpao commented 1 year ago

对端关闭写不就是客户端不发送请求了吗,那不关闭连接应该怎么做