我只是想在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服务器使用的其他更好/更快的方法有好处吗?
提前致谢。 :)
答案 0 :(得分:1)
几乎在每个操作系统中,您都有一个更好的操作系统相关选项,用于通过套接字发送文件,例如linux
Windows
std::ostream
my_socket_stream s;
s << file.rdbuf() << std::flush;
{{1}} {{1}}和...,但是如果你想要一个简单的可移植解决方案,我将从{{1}}派生一个类,它将数据发送到套接字,然后使用它:
{{1}}
使用这种技术,我可以毫无问题地发送多千兆字节文件!