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

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

本文关键字:客户端 reg 返回 服务器 文件 数据      更新时间:2023-10-16

我只是想在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 openn";
    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:nn%sn", buffer);
delete[] buffer;
return 0;
}

这个用于小文件的正常工作正常。即使我通过插座大小,我都会发送整个文件数据。这是更好的方法吗?

例如,如果文件大小很大?我想最好一次发送特定的数据。

你们可以建议哪种方法是好的(或)Web服务器使用的任何其他更好/更快的方法?

预先感谢。:)

几乎在每个操作系统中,您都有一个更好的OS依赖性选项用于通过套接字发送文件,例如在linux中,您有sendfile,在 Windows中,您有transmitfile和...,但是如果您想拥有一个简单的便携式解决方案,我将从std::ostream中得出一个将数据发送到套接字的类,然后使用以下方式:

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

使用此技术,我可以发送多个千兆字节文件而没有任何问题!