C ++,Ifstream在HTTP Server上打开本地文件但不打开文件

时间:2011-01-12 11:31:10

标签: c++

我使用ifstream打开文件,然后从中读取。 当我给出本地文件的位置时,我的程序工作正常 在我的系统上。 例如 /root/Desktop/abc.xxx工作正常

但是一旦该位置在http服务器上,该文件就失败了 打开。 例如 http://192.168.0.10/abc.xxx无法打开。

使用URL地址时,ifstream是否有替代方案?

感谢。

4 个答案:

答案 0 :(得分:5)

标准C ++库中没有用于通过http协议访问数据的实用程序。

但是有第三方图书馆: Libwww libcurl

另一个选择是拥有一个虚拟文件系统,将远程http文件映射为本地文件。这样您就不必修改应用程序来访问http。像http://okmij.org/ftp/HTTP-VFS.html

这样的东西

答案 1 :(得分:3)

ifstream不会读取HTTP服务器上的文件。它只会读取本地文件。

答案 2 :(得分:2)

ifstream中的f适用于file,而非socket

你需要制作一个HTTP GET Request然后流式传输响应,这是一个完全不同的操作。

考虑使用boost::asio或类似内容。 [Examples]

<强>更新

由于Web服务器位于您的局域网上(根据IP地址判断 - 不确定为什么人们仍然坚持在这些令人兴奋的DNS时代使用它们,但那是由by),您可能会挂载包含的文件系统本地计算机上的所需文件,使用NFS或类似文件。然后你就可以执行文件操作,使用ifstream进行读取。

答案 3 :(得分:0)

ifstream仅适用于文件系统上可访问的文件,而不适用于Web服务器。