我正在尝试使用Visual Studio 2008在C ++中编写客户端/服务器程序。到目前为止,项目运行执行以下操作:
在cmd提示符下运行webserver - webserver 8080 打开网络浏览器 - localhost 8080 打开本地html文件 - localhost:8080 / demo.html
但是现在......假设客户端请求gif文件,那么服务器应该发送gif文件。 客户端请求txt文件,然后服务器应该发送.txt文件。同样适用于.html和.xbm文件。
我不知道怎么做..任何帮助都非常感激。
答案 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文件测试它:)我已经有效了:)现在提交。记得为我投票:))