网络上找了个httplistener异步的例子
http://blogread.cn/it/article.php?id=291可以运行,但有个小问题,就是每次访问时,接收程序会运行2次,这个很奇怪
就是后面代码中HandleRequest方法里的Console.WriteLine("good");会输出2次,这个有办法解决吗付代码:
static void EndGetRequest(IAsyncResult result) 
        { 
            HttpListenerContext context = null; 
            System.Net.HttpListener listener = (System.Net.HttpListener)result.AsyncState;             try 
            { 
                context = listener.EndGetContext(result); 
                HandleRequest(context); 
            } 
            catch (Exception ex) 
            { 
               Console.Write("Exception in listener: {0}{1}", Environment.NewLine, ex); 
            } 
            finally 
            { 
                if (context != null) 
                    context.Response.Close();                 if (listener.IsListening) 
                    listener.BeginGetContext(EndGetRequest, listener); 
            } 
        }         static void HandleRequest(HttpListenerContext context) 
        { 
            bool isScrape = context.Request.RawUrl.StartsWith("/scrape", StringComparison.OrdinalIgnoreCase);             string responseStr = "very nice! haha"n来个中文你支持吗?"n"; 
            for (int i = 0; i < context.Request.QueryString.Count; i++) 
            {                 responseStr = responseStr + "query:" + context.Request.QueryString.Keys[i] + "=" + context.Request.QueryString[i] + ""n"; 
            } 
            Console.WriteLine("good");             byte[] response = System.Text.Encoding.Default.GetBytes(responseStr); 
            context.Response.ContentType = "text/plain"; //这里的类型随便你写.如果想返回HTML格式使用text/html 
            context.Response.StatusCode = 200; 
            context.Response.ContentLength64 = response.LongLength; 
            context.Response.OutputStream.Write(response, 0, response.Length); 
        }