C ++并发GET请求
-
03-07-2019 - |
题
我正在编写一个C ++应用程序,并希望同时通过HTTP GET请求请求多个数据文件,我应该在哪里开始(需要跨平台)。
- 运行应用程序
- 创建网址列表{" http://host/file1.txt "," ; http://host/file2.txt "," http://host/file3.txt "}
- 同时请求所有URL并将内容加载到变量(不想要磁盘写入)。每个文件大约有10kB的数据。 醇>
您建议我使用哪些图书馆? libcurl的? curlpp?提升asio?我是否需要滚动自己的多线程来同时请求所有文件?有更简单的方法吗?
编辑:我需要同时请求大约1000个GET请求。我很可能会批量执行此操作(一次100个,并创建更多连接,因为一个已完成)。
其他提示
Web浏览器通常会维护一个工作线程池来进行下载,并在它们空闲时为其分配下载。 IIRC,HTTP RFC可以说明你应该同时为同一台服务器建立多少个同时连接:太多是粗鲁的。
如果有几个请求是同一个服务器,并且它支持keep-alive(几乎每个人都这样做),那么这可能比通过多个同时请求发送垃圾邮件更好。一般的想法是您为串行的多个请求使用一个TCP / IP连接,从而节省了握手开销。根据我实现Java HTTPConnection类的经验,实际结果是你引入了一个微妙的错误,当你为新请求重新使用连接时并不总是正确地清除状态,并花费大量时间盯着日志/嗅探器数据; - )
libcurl肯定支持keepalive(我认为默认启用)。
不隶属于 StackOverflow