为什么InternetReadFile没有抓住网站的整个来源?

时间:2014-06-13 01:11:26

标签: c++ wininet

所以我用win32编写一个带WinInet.h库的项目,我使用字符串比较来检查源代码中是否有某个字符串,除了InternetReadFile没有抓取整个源代码,它只抓取顶部像20%,我尝试增加NumberOfBytes参数,我把它增加到1000万,现在它只需要永远。基本上,我有一个程序,你单击一个按钮,它抓取源代码并将其显示在消息框中。我试图让它成为当你点击按钮时,它搜索特定字符串的源代码,显示一个消息框,说明找到了文本。

任何人都知道我能做什么?

1 个答案:

答案 0 :(得分:3)

来自文档:

  

每次InternetReadFile调用要读取的数据量由dwNumberOfBytesToRead参数指定,数据在lpBuffer参数中返回。正常读取为每次调用InternetReadFile检索指定的dwNumberOfBytesToRead,直到到达文件末尾。 为了确保检索所有数据,应用程序必须继续调用InternetReadFile函数,直到函数返回TRUE并且lpdwNumberOfBytesRead参数等于零。

所以你必须在循环中调用InternetReadFile(),直到你收到了你期望的所有数据。由于您正在进行字符串搜索,因此您需要缓冲读取数据然后扫描缓冲区,因为您要查找的字符串可能会跨越多个InternetReadFile()次调用。