2011-01-12 65 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的閱讀。

相關問題