我正在使用同步 wininet 请求并InternetReadFileEx()
使用IRF_NO_WAIT
标志调用,但该函数仍会阻塞等待数据。这是为什么?
S D
问问题
1294 次
3 回答
1
在MSDN docs中, 的含义IRF_NO_WAIT
被描述为:
不要等待数据。如果有可用数据,该函数将返回请求的数据量或可用数据量(以较小者为准)。
神秘的是,它留下了没有数据未定义的情况。显然,如果没有数据,它会阻塞直到有一些数据。
于 2009-06-20T21:38:50.010 回答
1
一种可能的解决方法是使用 InternetQueryOption() 获取 INTERNET_DIAGNOSTIC_SOCKET_INFO 结构,然后将 SOCKET 句柄传递给 ::select(),超时时间为 {0, 0} 以确定数据是否可用而不阻塞。
于 2009-06-25T23:11:22.607 回答
0
IRF_NO_WAIT 的意思是不等待所有请求的数据缓冲区被填满。但是,它仍然会等待一些数据到达。如果没有数据到达,它会阻塞。
于 2009-06-20T21:36:33.307 回答