1

我正在编写一个必须能够回复多个 http 请求的 Web 服务。据我了解,我需要处理 HttpListener。接收 http 请求(或者更好的是,多个 http 请求)、翻译它并将结果发送回调用者的最佳方法是什么?在线程上使用 HttpListener 有多安全?

谢谢

4

1 回答 1

2

您通常会设置一个主线程来接受连接并将请求传递给线程池中的新线程或空闲线程来处理。我会说你在正确的轨道上。

您正在寻找类似于以下内容的内容:

 while (boolProcessRequests)
            {
                HttpListenerContext context = null;
                    // this line blocks until a new request arrives
                   context = listener.GetContext();
                   Thread T = new Thread((new YourRequestProcessorClass(context)).ExecuteRequest);
                   T.Start();
         }

编辑详细描述如果您没有访问网络服务器的权限并且需要推出自己的网络服务,您将使用以下结构:

一个接受连接/请求的主线程,一旦它们到达,它就会将连接传递给一个免费的威胁来处理。有点像餐厅的女主人将您传递给将处理您的请求的服务员/女服务员。

在这种情况下,Hostess(主线程)有一个循环: - 在门口等待新来的人 - 找到一张空闲的桌子,让顾客坐在那里,然后打电话给服务员处理请求。- 回到门口等待。

在上面的代码中,请求被封装在 HttpListernContext 对象中。一旦它们到达,主线程就会创建一个新线程和一个新的 RequestProcessor 类,该类使用请求数据(上下文)进行初始化。然后,RequsetProcessor 使用上下文对象中的 Response 对象来响应请求。显然,您需要创建 YourRequestProcessorClass 和类似 ExecuteRequest 的函数以由线程运行。

我不确定您在哪个平台上,但您可以此处查看线 ​​程和 httplistener的 .Net 示例。

于 2009-11-24T15:51:47.400 回答