我想在客户端上监听网络浏览器的请求。我知道我应该使用 HttpListener
但我不知道使用异步还是同步?使用 BeginGetContext
还是 GetContext
?
try
{
HttpListener listener = new HttpListener();
listener.Prefixes.Add[this is not a link]("http://127.0.0.1:9080/");
listener.Start();
Console.WriteLine("im listening...");
HttpListenerContext context = listener.GetContext();
HttpListenerRequest request = context.Request;
}
catch(exception e)
{
console.writeline(e.tostring());
}
最佳答案
I have written before about the trade-off between synchronous and asynchronous IO.因为永远只有一个线程占用接受新客户端同步 IO 很好。您最多可以节省一个线程,这是微不足道的节省。
您可能希望使实际请求处理异步。如果您有许多并发请求,这可能是个好主意。如果您的并发请求很少,您将一无所获。
请记住,异步 IO 通常工作量更大且更容易出错。在有充分理由的情况下使用它。
关于sockets - httplistener异步和同步的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25341651/