Http服务器 - 听取回复

时间:2013-02-17 14:04:33

标签: c# http service request listener

我已阅读以下有关创建简单http服务的文章: Create a Simple Threaded HTTP Server with C# 在实施之前,我有点陷入两难境地。

我有一项服务向多个目的地发送http请求(同时限制最大目的地),并收到每个目的地的响应。 如果请求处理正确与否,响应很短,只有状态(如果可以,则为200,或其他一些代码)。

上面的文章在while循环中创建了一个监听器,该监听器被阻止并正在侦听请求。

23          private static void Listen()
24          {
25              listener.Start();
26              WriteLog("Listening On: " + port.ToString());
27   
28              while (true)
29              {
30                  WriteLog("Waiting for connection...");
31                  TcpClient client = listener.AcceptTcpClient();
32                  Thread listenThread 
                       = new Thread(new ParameterizedThreadStart(ListenThread));
33                  listenThread.Start(client);
34              }
35          }

我需要向设备发送请求并听取每个设备的响应。 是否有可能如果我得到一个响应,并且直到循环返回到listen命令(31),另一个响应将会滑落?

如果我处理的http请求数量有限,我应该为每个或一个监听器创建一个监听器吗?

2 个答案:

答案 0 :(得分:1)

你有没有使用ASP.net Webapi?这应该dp正是你需要的:-) 在那里你也可以有异步控制器,有很多例子。

答案 1 :(得分:1)

等待accept的TCP连接被放入连接backlog(默认情况下为100 IIRC,您可以在侦听器构造函数中更改它)。这意味着可以有100个并发TCP连接请求等待接受。

因此,除非你有超过这个数量的连接等待处理,否则你不会失去任何连接。