Forum Articles
WJunction


  1. #1
    Member

    • My Statistics

    Lightbulb [C#] Tiny Web Server (snippet)

    This is one of those examples that really gives you an idea just how much dev time the .NET platform saves you. This is a extremely basic web server.

    PHP Code:
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;

    using c System.Console;


    namespace 
    Hyperz.BasicWebServer
    {
        public class 
    Program
        
    {
            private static 
    String address;
            private static 
    Thread listenThread;
            private static 
    HttpListener listener;

            public static 
    void Main(string[] args)
            {
                
    c.WriteLine("[{0:HH:mm}] Initializing"DateTime.Now);

                
    // the address we want to listen on
                
    address "http://127.0.0.1:80/";

                
    // setup thread
                
    listenThread = new Thread(Worker);
                
    listenThread.IsBackground true;
                
    listenThread.Priority ThreadPriority.Normal;

                
    // setup listener
                
    listener = new HttpListener();
                
    listener.Prefixes.Add(address);

                
    // Gogogo
                
    listenThread.Start(null);

                
    // prevent the console window from closing
                
    while (truec.ReadKey(true);
            }

            private static 
    void Worker(object state)
            {
                
    // start listening
                
    listener.Start();

                
    c.WriteLine("[{0:HH:mm}] Running"DateTime.Now);

                
    // request -> response loop
                
    while (true)
                {
                    
    HttpListenerContext context listener.GetContext();
                    
    HttpListenerRequest request context.Request;
                    
                    
    c.WriteLine(
                        
    "[{0:HH:mm}] Request received from {1}",
                        
    DateTime.Now,
                        
    request.LocalEndPoint.Address
                    
    );

                    
    /* respond to the request.
                     * in this case it'll show "Server appears to be working".
                     * regardless of what file/path was requested.
                     */
                    
    using (HttpListenerResponse response context.Response)
                    {
                        
    string html "<b>Server appears to be working!</b>";
                        
    byte[] data Encoding.UTF8.GetBytes(html);

                        
    response.ContentType "text/html";
                        
    response.ContentLength64 data.Length;

                        
    using (Stream output response.OutputStream)
                        {
                            
    output.Write(data0data.Length);
                        }
                    }

                    
    c.WriteLine(
                        
    "[{0:HH:mm}] Handled request for {1}",
                        
    DateTime.Now,
                        
    request.LocalEndPoint.Address
                    
    );
                }
            }
        }



    All that in 90 lines of code. C# .


  2. #2
    Member jayfella's Avatar

    Website(s):
    extremecoderz.com
    • My Statistics

    Default

    + awesome multi-thread scaling

  3. #3
    Banned

    • My Statistics

    Default

    hmm Interesting :d

  4. #4
    Member

    • My Statistics

    Default

    Quote Originally Posted by jayfella View Post
    + awesome multi-thread scaling
    This example is single threaded .

  5. #5
    Member gfxguru's Avatar

    Website(s):
    GFXWebHosting.com WarezJobs.com
    • My Statistics

    Default

    thats is so cool Hyperz...

  6. #6
    Member jayfella's Avatar

    Website(s):
    extremecoderz.com
    • My Statistics

    Default

    Quote Originally Posted by Hyperz View Post
    This example is single threaded .
    Yeah i know, but not if you change like 3 lines.

  7. #7
    Member

    • My Statistics

    Default

    It would be a bit more than 3 lines lol. But if some1 is genuinely interested in this I can write an improved version which also handles file requests.

Results 1 to 7 of 7

Similar Threads

  1. Plz Help To Add A Php Snippet Into My DLE Index !
    By JoomlaZ in forum Development Area
    Replies: 0
    Last Post: 7th Jul 2011, 01:18 PM
  2. Facebook May Make Tiny Town a Data Center Mecca
    By Daniel in forum News & Current Events
    Replies: 3
    Last Post: 30th May 2011, 06:20 PM
  3. Image Upload in php. Code snippet #2
    By SplitIce in forum Tutorials and Guides
    Replies: 5
    Last Post: 31st Oct 2009, 07:40 AM
  4. See real OOP (Snippet from Litewarez V2) Webmasters CP
    By litewarez in forum Tutorials and Guides
    Replies: 21
    Last Post: 19th Sep 2009, 03:59 PM
  5. A Snippet from my latest project
    By litewarez in forum Tutorials and Guides
    Replies: 19
    Last Post: 21st Jun 2009, 05:17 PM