Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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#TcpListener铬问题_C#_Google Chrome_Tcplistener - Fatal编程技术网

C#TcpListener铬问题

C#TcpListener铬问题,c#,google-chrome,tcplistener,C#,Google Chrome,Tcplistener,我在尝试从谷歌浏览器执行HTTP GET请求时遇到了一个额外的问题 我有一个简单的HttpServer,如下所示: public class HttpServer { #region Attributes ---------------------------------------------------- protected Int32 Port; private TcpListener listener; private Boolean clos

我在尝试从谷歌浏览器执行HTTP GET请求时遇到了一个额外的问题

我有一个简单的HttpServer,如下所示:

public class HttpServer
    {

    #region Attributes ----------------------------------------------------

    protected Int32 Port;
    private TcpListener listener;
    private Boolean closed;

    #endregion

    #region Properties (Own Members) --------------------------------------

    internal String Folder { get; private set; }

    #endregion

    #region Constructors --------------------------------------------------

    #endregion

    #region Methods (Own Members) -----------------------------------------

    public void Start(Int32 port, String folder)
        {
        if (!Directory.Exists(folder))
            throw new ArgumentException("folder");

        closed = false;

        this.Folder = folder;

        var ipLocal = IPAddress.Parse(NetUtils.GetLocalIPv4()); // My own stuff to get 
        this.Port = port;

        listener = new TcpListener(ipLocal, Port);
        listener.Start();

        StartAccept();
        }

    public void Stop()
        {
        if (listener == null) return;

        closed = true;

        listener.Stop();
        listener = null;
        }

    private void AcceptCallback(IAsyncResult ar)
        {
        if (closed) { return; }

        StartAccept();

        var client = listener.EndAcceptTcpClient(ar);

        var processor = new HttpProcessor(client, this);
        processor.Start();
        }

    private void StartAccept()
        {
        listener.BeginAcceptTcpClient(AcceptCallback, listener);
        }

    #endregion

    }
HttpProcessor是一个管理客户机和服务器之间数据交换的类,这不是问题所在

我将服务器设置为正常:

var httpServer = new HttpServer();
httpServer.Start(localPort, "somepath");
问题来了当我在Mozilla Firefox“”上写入时,它会进入AcceptCallback一次(正如预期的那样),但在Google Chrome上写入相同的url会导致调用该方法两次。


谁能解释一下这里有什么问题吗?提前感谢。

我建议进一步研究chrome的性能。可以使用应用程序查看浏览器发出的web请求


您可能还希望禁用浏览器上的所有扩展,因为这些扩展也可能正在发出请求。还可以尝试使用一个带有单个选项卡的chrome实例(这一个很难实现,但只是为了消除发生任何意外操作的可能性)。

我建议您查看收到的请求。我猜是一个图标文件或类似的东西。我要求音频文件,例如,“。事实上,在Firefox中,我可以正确下载文件,在Chome中,第一个调用下载文件,但第二个调用将永远等待。无法理解为什么只在Chrome上调用两次。其中一个连接可能能够并行请求
favico.ico
。查看传入请求的URL。无论哪种方式,HTTP客户端都可以打开任意数量的连接。