我正在用 Python 脚本对一个简单的 HTTP 重定向服务器进行压力测试。该脚本使用非阻塞套接字的 epoll(边缘触发模式)设置。但我观察到一些我不太明白的东西,
1) 当 connect() 正在进行时,epoll 可以获得 ECONNREFUSED 和 ETIMEOUT errno。他们不是都表示远程服务器不能接受连接吗?它们有何不同,客户如何区分?
2)有时当epoll通知EPOLLIN时,socket.recv()返回空字符串而没有抛出任何异常(或C中的errno),我可以继续读取套接字而没有任何异常或错误,它总是返回空字符串。这是为什么?
谢谢,