我正在尝试使用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个连接用于什么?
或者我做错了什么?