将文件的数据从服务器返回给客户端 - reg

时间:2012-10-30 18:06:09

标签: c++ file-io webserver

我只是想在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服务器使用的其他更好/更快的方法有好处吗?

提前致谢。 :)

1 个答案:

答案 0 :(得分:1)

几乎在每个操作系统中,您都有一个更好的操作系统相关选项,用于通过套接字发送文件,例如linux Windows std::ostream my_socket_stream s; s << file.rdbuf() << std::flush; {{1}} {{1}}和...,但是如果你想要一个简单的可移植解决方案,我将从{{1}}派生一个类,它将数据发送到套接字,然后使用它:

{{1}}

使用这种技术,我可以毫无问题地发送多千兆字节文件!