Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么web浏览器会发出两个下载mp3文件的请求?_C#_Http_Webserver - Fatal编程技术网

C# 为什么web浏览器会发出两个下载mp3文件的请求?

C# 为什么web浏览器会发出两个下载mp3文件的请求?,c#,http,webserver,C#,Http,Webserver,我正在创建一个非常简单的web服务器,它的唯一目的是返回一个mp3文件 // create server TcpListener server = new TcpListener(8585); server.Start(); while (true) { // accept a new client using (var client = server.AcceptTcpClient()) {

我正在创建一个非常简单的web服务器,它的唯一目的是返回一个mp3文件

// create server
TcpListener server = new TcpListener(8585);
server.Start();

while (true)
{
    // accept a new client
    using (var client = server.AcceptTcpClient())
    {                                        
        byte[] buffer = new byte[1024 * 2];

        var i = client.Client.Receive(buffer);

        // get request client sent us
        var request = System.Text.Encoding.UTF8.GetString(buffer, 0, i).ToLower();

        // if the browser is requesting an icon return
        if (request.Contains("/favicon.ico"))
        {
            continue;
        }

        // with fiddler when I downloaded great.mp3 I saved the response as a binary file to make sure I am returning the right output

        client.Client.Send(System.IO.File.ReadAllBytes("cheat.bin"));

    }
}

它基本上包括

HTTP/1.1 200 OK
Server: Apache/2.2.3 (CentOS)
X-HOST: sipl-web-233.oddcast.com
X-TTSCache: HIT
X-TTSCacheInsert: NO
Content-Type: audio/mpeg
Access-Control-Allow-Origin: *
Vary: Accept-Encoding
Date: Thu, 01 May 2014 00:02:15 GMT
Content-Length: 5471
Connection: keep-alive

ID3���� .... rest of mp3 file!
所以我的问题是,为什么当我转到
http://localhost:8585/getSong
在我的web浏览器上,歌曲被下载两次?
换句话说,如果我在代码中放置断点,我会点击两次。此外,在我再次返回歌曲之前,我将无法在浏览器中播放音频


我问这个问题主要是为了学习。我不明白怎么回事。

浏览器经常在HTTP获取之前进行HTTP头调用,不是吗?这可能是原因吗


无论如何,我想用一些东西来看看浏览器发出的HTTP请求到底是什么。

有没有可能你的MP3比你分配的缓冲区大,所以需要两次传输才能发送整个内容?@SJP:似乎是这样。内容长度为5471,缓冲区为2048。我使用fiddler从同一网络中的dif计算机发出请求,我看到请求发出了两次。我把mp3文件放在一个真正的网络服务器上,请求只发出了一次。我很想知道发生了什么事