c++ - 从服务器端关闭客户端套接字的问题
问题描述
我目前正在开发 Web 服务器 http 项目。当我用 ctrl c 停止攻城压力测试时,我注意到了一些东西。我正在使用 Epoll 进行多路复用。
我通过 epoll 收到 EPOLLIN 事件的客户端套接字(假设 fd = 6)在接收后返回 0。
发生这种情况时,我考虑到出了问题,关闭了客户袜子 (6)。
在此之后,我遇到了与前一个套接字客户端 (6) 相关的套接字服务器(假设 fd = 5)上的新请求的问题。
如果我收到关于它的请求,我将接受新连接并获得一个新的客户端 sock(假设是 7,但它可能是 6,因为我关闭了前一个)。
我将在客户端 sock 7 上设置并接收事件 EPOLLIN。我将阅读其中的内容并找到来自 siege 的旧请求。
我会响应这个请求,但在发送时会收到一个 broken_pipe 信号。
套接字服务器 (5) 将无法接收任何其他请求。
看起来它可能与 SIGPIPE 有关,我们 SIG_IGN 它,但它仍然不起作用。看起来插座坏了。
有没有人知道发生了什么?
我可以提供我可能忘记的任何其他信息。
谢谢
解决方案
推荐阅读
- swift - 删除行后无法禁用表格编辑
- python - Python正则表达式识别文本摘要中大写的单个单词行
- speedment - 使用 Speedment 对包含来自多个表的数据的结果表进行聚合函数
- mongodb - mongo上的问题性能与展开字符串数组
- python - 用于捕获用户输入的 Python 库/模块
- node.js - 使用 AWS Pinpoint 向特定电话号码发送 SMS 消息
- javascript - JS getElementById 在创建的元素上
- apache-kafka - 连续收听一个主题,获取数据,执行一些基本的清理
- reporting-services - 在矩阵中重复行总计
- python - Python 正则表达式搜索不显示月份文本