我正在使用事件驱动的winsock套接字开发一个http客户端。但我对如何处理FD_CLOSE消息感到困惑。在某些情况下,我收到FD_CLOSE甚至很难,仍有数据要在套接字中读取。所以我目前的代码是这样的:
a_list[:]
一旦接收到FD_CLOSE,它基本上可以读取尽可能多的数据。但是当它收到FD_READ时,它只发出一个recv。到目前为止,这种方法似乎有效,但对我来说看起来很奇怪,特别是那些做什么的部分。而且我担心这将在未来的某个时候出现问题。处理FD_CLOSE的正确方法是什么?我无法在msdn或Windows SDK中找到任何示例。
(我在上面的代码段中省略了一些明显的错误检查。)
编辑:这是两个可用于观察此行为的演示程序: