簡體   English   中英

從服務器返回文件數據到客戶端-reg

[英]returning back file's data from server to client - reg

我只是想在C ++中實現一個簡單的Web服務器。 為此,Web服務器根據請求從服務器獲取數據。 為此,我正在使用

int main()
{
std::ifstream file("/home/chaitanya/cpp/net/hello");
int length;
char *buffer;

if(file.is_open())
{
    std::cout << "File is open\n";

    file.seekg(0, std::ios::end);
    length = file.tellg();      
    file.seekg(0, std::ios::beg);

    buffer = new char[length];

    file.read(buffer, length);
    file.close();   
}   

printf("Data:\n\n%s\n", buffer);
delete[] buffer;

return 0;
}

對於小文件,此工作正常。 即使我通過套接字發送整個文件數據,無論其大小如何。 這是更好的方法嗎?

例如,如果文件大? 我想最好一次發送一個特定的數據塊。

你們能建議哪種方法更好(或哪種更好或更快的Web服務器方法)嗎?

提前致謝。 :)

幾乎在每個操作系統中,都有一個更好的依賴於操作系統的選項,可以通過套接字發送文件,例如,在linux您具有sendfile ,在Windows您具有TransmitFile和...,但是,如果您想要一個簡單的可移植解決方案,我將從std::ostream派生一個類,該類將數據發送到套接字,然后使用以下命令:

my_socket_stream s;
s << file.rdbuf() << std::flush;

使用這種技術,我可以毫無問題地發送多個千兆字節的文件!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM