确定文件类型c

时间:2013-10-26 22:56:14

标签: c++ webserver

我正在尝试使用Visual Studio 2008在C ++中编写客户端/服务器程序。到目前为止,项目运行执行以下操作:

在cmd提示符下运行webserver - webserver 8080 打开网络浏览器 - localhost 8080 打开本地html文件 - localhost:8080 / demo.html

但是现在......假设客户端请求gif文件,那么服务器应该发送gif文件。 客户端请求txt文件,然后服务器应该发送.txt文件。同样适用于.html和.xbm文件。

我不知道怎么做..任何帮助都非常感激。

2 个答案:

答案 0 :(得分:0)

在UNIX系统上,您使用file命令:它使用一组已知的“幻数”,用于标识不同的文件类型。并且很少有启发式方法来处理剩余的文件。大多数文件格式都嵌入了某种标识符,通常在前几个字节中。特别是文本文件通常没有幻数,而只使用可打印的字符(UTF8和UTF16很受欢迎,分类文本文件变得有点困难)。

确定文件类型后,您只需设置相应的HTTP标头。

答案 1 :(得分:0)

好吧,因为我们在同一个班级,我会给你一个线索:)

在标题部分,添加一些if-else,如下所示:

if(strcmp(type,"html")==0){
  (void) sprintf(buff,"Content-Type:text/html\r\n");
  (void) send(conn,buff,strlen(buff),0);
}

else if(strcmp(type,"gif")==0){
  (void) sprintf(buff,"Content-Type:image/gif\r\n");
  (void) send(conn,buff,strlen(buff),0);
}

知道了吗?顺便说一句,你需要获得扩展(使用endsWith函数检查路径),将扩展名与文件类型进行比较,然后给出正确的标题。用gif文件测试它:)我已经有效了:)现在提交。记得为我投票:))