Async HTTPListener (handy for test)

The crux of it is at

(minor improvement made with use of lamda)

//prefixes are the URLs you want to intercept
public static void NonblockingListener(string [] prefixes)
    HttpListener listener = new HttpListener();
    foreach (string s in prefixes)

AsyncCallback callback = new AsyncCallback(
   (result) =>
    HttpListener listener = (HttpListener) result.AsyncState;
    // Call EndGetContext to complete the asynchronous operation.
    HttpListenerContext context = listener.EndGetContext(result);
    HttpListenerRequest request = context.Request;
    // Obtain a response object.
    HttpListenerResponse response = context.Response;
    // Construct a response. 
    string responseString = "<HTML><BODY> Hello world!</BODY></HTML>";
    byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
    // Get a response stream and write the response to it.
    response.ContentLength64 = buffer.Length;
    System.IO.Stream output = response.OutputStream;
    // You must close the output stream.

    IAsyncResult result = listener.BeginGetContext(callback, listener);
    // Applications can do some work here while waiting for the  
    // request. If no work can be done until you have processed a request, 
    // use a wait handle to prevent this thread from terminating 
    // while the asynchronous operation completes.
    Console.WriteLine("Waiting for request to be processed asyncronously.");

    //  Do TEST HERE!!!
    Console.WriteLine("Request processed asyncronously.");

Note that an easy way to do the callback is a lambda.

Example here:

This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s