当浏览器尝试连接时,C#BeginAcceptTcpClient返回多个tcp客户端

时间:2018-03-10 19:05:30

标签: c# http tcp tcpclient tcplistener

我正在尝试使用C#中的TcpListener类创建HTTP / 1.1 Web服务器。

我已经创建了这个基本代码,用于接收到Web服务器的传入连接。

namespace TCPServer
{
    using System;
    using System.Net;
    using System.Net.Sockets;

    class Program
    {
        private static TcpListener listener;

        private static int count;

        static void Main(string[] args)
        {
            listener = new TcpListener(new IPEndPoint(IPAddress.Loopback, 8080));
            listener.Start();

            BeginAccept();

            while (true)
            {
                Console.ReadLine();
            }
        }

        static void BeginAccept()
        {
            listener.BeginAcceptTcpClient(BeginAcceptCallback, null);
        }

        static void BeginAcceptCallback(IAsyncResult result)
        {
            var id = ++count;
            Console.WriteLine(id + " Connected");

            BeginAccept();
        }
    }
}

但是,当我运行此程序并尝试连接到我的网络浏览器中的http://localhost:8080/(谷歌浏览器)时,我读了3个不同的连接。

输出:

1 Connected
2 Connected
3 Connected

这些连接中只有一个包含http请求的prolog和标题,另外两个似乎是空的。

这是标准行为吗? 如果是这样,其他2个连接用于什么?

或者我做错了什么?

0 个答案:

没有答案