[英]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.