以下是我在C和Internet Explorer中创建的Web服务器之间的通信。一切都是服务但音频文件。有关为什么只提供音频的任何见解?
GET /castle/media/witchwoode.m4a HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept: */*
Referer: http://127.0.0.1:6006/castle/index.html
GetContentFeatures.DLNA.ORG: 1
Pragma: getIfoFileURI.dlna.org
Accept-Language: en-US
Accept-Encoding: gzip, deflate
Host: 127.0.0.1:6006
Connection: Keep-Alive
HTTP/1.1 200 OK
Server: web
Content-Length: 3017451
Connection: close
Content-Type: audio/mp4
答案 0 :(得分:0)
如果我从techslides下载示例m4a文件,我会收到以下响应:
HTTP/1.1 200 OK
Server: nginx/1.4.1 (Ubuntu)
Date: Sat, 25 Jun 2016 02:35:31 GMT
Content-Type: audio/mpeg
Content-Length: 34535
Last-Modified: Sun, 16 Feb 2014 18:49:36 GMT
Connection: keep-alive
ETag: "53010840-86e7"
Accept-Ranges: bytes
如您所见:不同的内容类型和连接。
BTW:Firefox说了一个有关损坏文件的内容,但是带有上述地址的Chrome和带有下载文件的独立播放器(mplayer)工作得很好,所以在你讨厌代码之前,请尝试更改协议答案 1 :(得分:0)
好吧,它无法正常工作。以下是我认为存在问题的代码的一部分。
范围,是一个确定何时找到“范围”的int
ctype ,基于GET中的文件扩展名。
标题,用于保存标题的缓冲区
out ,用于发送到浏览器的数据的malloced内存
out2 ,用于保存标题和输出的malloced内存然后发送。
isize ,是 out 的整数。
datasize , isize 的字符串表示。
if ( range == 0 )
{
strcpy(header,"HTTP/1.1 200 OK\r\nServer: web\r\nContent-Type: ");
}
else
{
strcpy(header,"HTTP/1.1 200 OK\r\nServer: web\r\nAccept-Ranges: none\r\nContent-Type: ");
}
strcat(header,ctype);
strcat(header,"\r\nContent-Length: ");
strcat(header,datasize);
strcat(header,"\r\nConnection: close\r\n\r\n");
printf("%s",header);
printf("\nlength of header: %d\n", strlen(header));
out2 = malloc( sizeof(char)*(isize+1+strlen(header)) );
memcpy(out2,header,strlen(header));
memcpy(&out2[strlen(header)],out,isize);
free(out);
send(sd,out2,isize+strlen(header),0);
free(out2);