2011-01-12 66 views
3

我正在使用ifstream打开文件,然后从中读取文件。 我的程序工作正常,当我给我的系统上的本地文件 的位置。 用于如 /root/Desktop/abc.xxx工作正常C++,Ifstream打开本地文件但不是HTTP服务器上的文件

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

当使用URL地址时ifstream是否有其他替代方法?

谢谢。

+0

是的。但事情并非如此简单。服务器必须能够处理请求。所以问题是在192.168.0.10上运行什么来处理请求?你正在运行一个网络服务器或文件剪切服务器或其他东西,从您的服务器共享文件? – 2011-01-12 17:05:43

回答

5

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

有第三方库,但: Libwww libcurl

另一种选择是有一个远程HTTP文件映射为本地文件的虚拟文件系统。这样你就不必修改你的应用程序来访问http。喜欢的东西http://okmij.org/ftp/HTTP-VFS.html

3

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

+2

更准确地说,它读取本地文件系统,文件可能驻留在其他地方,如在NFS情况下。 – 2011-01-12 11:40:32

+0

@Maxim,是的。我相信Windows或Linux或某个操作系统可以选择将HTTP和FTP映射到文件系统。 – Earlz 2011-01-14 01:52:29

0

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

2

fifstreamfile,不socket

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

考虑使用boost::asio,或类似的。 [Examples]

更新

由于Web服务器是您的本地区域网络(通过IP地址判断 - 不知道为什么人们仍然坚持使用那些在DNS中的这些激动人心的日子里,但这是由你可以使用NFS或类似的方式在本地机器上安装包含所需文件的文件系统。然后,您将能够执行文件操作,例如ifstream的阅读。

相关问题