Click here to Skip to main content
15,885,767 members
Articles / Web Development / HTML

Building a Tiny WebServer in Less than 500 Lines

Rate me:
Please Sign up or sign in to vote.
4.88/5 (35 votes)
23 Aug 2013CPOL3 min read 130.1K   6K   152  
This tiny webserver can be hosted by applications that need to serve specialised web pages.
  • TinyServer_src.zip
    • TinyServer_src
      • RssAggregator
      • TinyServer
      • WebServer
        • App.config
        • App.ico
        • AssemblyInfo.cs
        • html
        • LibrarySupport
          • MsCorLib.dll
            • System
              • Collections
                • Collections.txvpck
              • IO
                • IO.txvpck
              • System.txvpck
              • Text
                • Text.txvpck
              • Threading
                • Threading.txvpck
          • System
            • System
              • Collections
                • Collections.txvpck
                • Specialized
                  • Specialized.txvpck
              • Net
                • Net.txvpck
                • Sockets
                  • Sockets.txvpck
              • System.txvpck
        • Properties
        • root
          • CodeCommentReport
            • banner.htm
            • banner.jpg
            • CodeCommentReportError.htm
            • commentreport.css
            • darkcorner.jpg
            • gradleft.jpg
            • gradtop.jpg
            • graycorner.jpg
            • minus.jpg
            • plus.jpg
            • PyramidAnim2.gif
            • Solution_TinyServer.HTM
            • Solution_WebServer.HTM
            • titletile.jpg
            • vt.js
            • WebServer
              • CWP0.HTM
              • CWP10.HTM
              • CWP11.HTM
              • CWP12.HTM
              • CWP13.HTM
              • CWP14.HTM
              • CWP15.HTM
              • CWP16.HTM
              • CWP17.HTM
              • CWP18.HTM
              • CWP19.HTM
              • CWP2.HTM
              • CWP20.HTM
              • CWP21.HTM
              • CWP23.HTM
              • CWP24.HTM
              • CWP25.HTM
              • CWP26.HTM
              • CWP27.HTM
              • CWP28.HTM
              • CWP29.HTM
              • CWP3.HTM
              • CWP30.HTM
              • CWP31.HTM
              • CWP32.HTM
              • CWP33.HTM
              • CWP34.HTM
              • CWP35.HTM
              • CWP36.HTM
              • CWP37.HTM
              • CWP38.HTM
              • CWP39.HTM
              • CWP4.HTM
              • CWP40.HTM
              • CWP41.HTM
              • CWP42.HTM
              • CWP43.HTM
              • CWP44.HTM
              • CWP45.HTM
              • CWP46.HTM
              • CWP47.HTM
              • CWP48.HTM
              • CWP49.HTM
              • CWP5.HTM
              • CWP50.HTM
              • CWP51.HTM
              • CWP52.HTM
              • CWP53.HTM
              • CWP54.HTM
              • CWP55.HTM
              • CWP56.HTM
              • CWP57.HTM
              • CWP58.HTM
              • CWP59.HTM
              • CWP6.HTM
              • CWP60.HTM
              • CWP61.HTM
              • CWP62.HTM
              • CWP63.HTM
              • CWP64.HTM
              • CWP65.HTM
              • CWP66.HTM
              • CWP67.HTM
              • CWP68.HTM
              • CWP7.HTM
              • CWP8.HTM
              • CWP9.HTM
              • WebServer.HTM
          • default.html
          • default.html.bak
          • form.html
          • form.html.bak
          • TinyServer
            • CWP0.HTM
            • CWP10.HTM
            • CWP11.HTM
            • CWP12.HTM
            • CWP13.HTM
            • CWP14.HTM
            • CWP15.HTM
            • CWP16.HTM
            • CWP17.HTM
            • CWP18.HTM
            • CWP2.HTM
            • CWP20.HTM
            • CWP21.HTM
            • CWP22.HTM
            • CWP23.HTM
            • CWP24.HTM
            • CWP25.HTM
            • CWP26.HTM
            • CWP27.HTM
            • CWP28.HTM
            • CWP29.HTM
            • CWP3.HTM
            • CWP30.HTM
            • CWP31.HTM
            • CWP32.HTM
            • CWP33.HTM
            • CWP34.HTM
            • CWP35.HTM
            • CWP36.HTM
            • CWP37.HTM
            • CWP38.HTM
            • CWP39.HTM
            • CWP4.HTM
            • CWP40.HTM
            • CWP41.HTM
            • CWP42.HTM
            • CWP43.HTM
            • CWP44.HTM
            • CWP45.HTM
            • CWP46.HTM
            • CWP47.HTM
            • CWP48.HTM
            • CWP49.HTM
            • CWP5.HTM
            • CWP50.HTM
            • CWP51.HTM
            • CWP52.HTM
            • CWP53.HTM
            • CWP54.HTM
            • CWP55.HTM
            • CWP56.HTM
            • CWP57.HTM
            • CWP58.HTM
            • CWP59.HTM
            • CWP6.HTM
            • CWP60.HTM
            • CWP61.HTM
            • CWP62.HTM
            • CWP63.HTM
            • CWP64.HTM
            • CWP65.HTM
            • CWP66.HTM
            • CWP67.HTM
            • CWP7.HTM
            • CWP8.HTM
            • CWP9.HTM
            • TinyServer.HTM
          • WebServer
            • CWP0.HTM
            • CWP2.HTM
            • CWP3.HTM
            • CWP4.HTM
            • CWP5.HTM
            • WebServer.HTM
        • ServerHost.cs
        • TinyServer.csproj.user
        • WebServer.csproj
        • WebServer.csproj.user
  • tinyserver_demo.zip
    • Applications
      • RssAggregator
      • WebServer
        • html
        • root
          • CodeCommentReport
            • banner.htm
            • banner.jpg
            • CodeCommentReportError.htm
            • commentreport.css
            • darkcorner.jpg
            • gradleft.jpg
            • gradtop.jpg
            • graycorner.jpg
            • minus.jpg
            • plus.jpg
            • PyramidAnim2.gif
            • Solution_TinyServer.HTM
            • Solution_WebServer.HTM
            • titletile.jpg
            • vt.js
            • WebServer
              • CWP0.HTM
              • CWP10.HTM
              • CWP11.HTM
              • CWP12.HTM
              • CWP13.HTM
              • CWP14.HTM
              • CWP15.HTM
              • CWP16.HTM
              • CWP17.HTM
              • CWP18.HTM
              • CWP19.HTM
              • CWP2.HTM
              • CWP20.HTM
              • CWP21.HTM
              • CWP23.HTM
              • CWP24.HTM
              • CWP25.HTM
              • CWP26.HTM
              • CWP27.HTM
              • CWP28.HTM
              • CWP29.HTM
              • CWP3.HTM
              • CWP30.HTM
              • CWP31.HTM
              • CWP32.HTM
              • CWP33.HTM
              • CWP34.HTM
              • CWP35.HTM
              • CWP36.HTM
              • CWP37.HTM
              • CWP38.HTM
              • CWP39.HTM
              • CWP4.HTM
              • CWP40.HTM
              • CWP41.HTM
              • CWP42.HTM
              • CWP43.HTM
              • CWP44.HTM
              • CWP45.HTM
              • CWP46.HTM
              • CWP47.HTM
              • CWP48.HTM
              • CWP49.HTM
              • CWP5.HTM
              • CWP50.HTM
              • CWP51.HTM
              • CWP52.HTM
              • CWP53.HTM
              • CWP54.HTM
              • CWP55.HTM
              • CWP56.HTM
              • CWP57.HTM
              • CWP58.HTM
              • CWP59.HTM
              • CWP6.HTM
              • CWP60.HTM
              • CWP61.HTM
              • CWP62.HTM
              • CWP63.HTM
              • CWP64.HTM
              • CWP65.HTM
              • CWP66.HTM
              • CWP67.HTM
              • CWP68.HTM
              • CWP7.HTM
              • CWP8.HTM
              • CWP9.HTM
              • WebServer.HTM
          • default.html
          • TinyServer
            • CWP0.HTM
            • CWP10.HTM
            • CWP11.HTM
            • CWP12.HTM
            • CWP13.HTM
            • CWP14.HTM
            • CWP15.HTM
            • CWP16.HTM
            • CWP17.HTM
            • CWP18.HTM
            • CWP2.HTM
            • CWP20.HTM
            • CWP21.HTM
            • CWP22.HTM
            • CWP23.HTM
            • CWP24.HTM
            • CWP25.HTM
            • CWP26.HTM
            • CWP27.HTM
            • CWP28.HTM
            • CWP29.HTM
            • CWP3.HTM
            • CWP30.HTM
            • CWP31.HTM
            • CWP32.HTM
            • CWP33.HTM
            • CWP34.HTM
            • CWP35.HTM
            • CWP36.HTM
            • CWP37.HTM
            • CWP38.HTM
            • CWP39.HTM
            • CWP4.HTM
            • CWP40.HTM
            • CWP41.HTM
            • CWP42.HTM
            • CWP43.HTM
            • CWP44.HTM
            • CWP45.HTM
            • CWP46.HTM
            • CWP47.HTM
            • CWP48.HTM
            • CWP49.HTM
            • CWP5.HTM
            • CWP50.HTM
            • CWP51.HTM
            • CWP52.HTM
            • CWP53.HTM
            • CWP54.HTM
            • CWP55.HTM
            • CWP56.HTM
            • CWP57.HTM
            • CWP58.HTM
            • CWP59.HTM
            • CWP6.HTM
            • CWP60.HTM
            • CWP61.HTM
            • CWP62.HTM
            • CWP63.HTM
            • CWP64.HTM
            • CWP65.HTM
            • CWP66.HTM
            • CWP67.HTM
            • CWP7.HTM
            • CWP8.HTM
            • CWP9.HTM
            • TinyServer.HTM
          • WebServer
            • CWP0.HTM
            • CWP2.HTM
            • CWP3.HTM
            • CWP4.HTM
            • CWP5.HTM
            • WebServer.HTM
        • RssAggregator.exe
        • RssAggregator.exe.config
        • TinyServerHost.exe
        • TinyServerHost.exe.config
        • TinyServerLib.dll
  • tinyserver_demov2.zip
BODY  {
	BACKGROUND-COLOR : white;
	BORDER-BOTTOM : 0px;
	BORDER-LEFT : 0px;
	BORDER-RIGHT : 0px;
	BORDER-TOP : 0px;
	MARGIN : 0px;
	PADDING-BOTTOM : 0px;
	PADDING-LEFT : 0px;
	PADDING-RIGHT : 0px;
	PADDING-TOP : 0px;
}

.PageHeading  {
	FONT-SIZE: 120%;
	FONT-FAMILY: Verdana, sans-serif;
	FONT-WEIGHT: bold;
	MARGIN-TOP: 30px;
	MARGIN-LEFT: 21px;
}

.Description  {
	FONT-FAMILY : Verdana, sans-serif;
	FONT-SIZE : 70%;
	MARGIN-LEFT : 50px;
	MARGIN-TOP : 16px;
}

.InfoTable  {
	BORDER-BOTTOM : medium none;
	BORDER-LEFT : medium none;
	BORDER-RIGHT : medium none;
	BORDER-TOP : medium none;
	MARGIN-TOP : 16px;
	MARGIN-LEFT : 10px;
	WIDTH : 100%;
}

.TableDarkLabel
{
	COLOR : white;
	FONT-FAMILY : Verdana, sans-serif;
	FONT-SIZE : 70%;
	FONT-WEIGHT : bold;
	MARGIN-LEFT : 9px;
        BACKGROUND : #336666;
}

.TableLightLabel
{
        COLOR : white;
	FONT-FAMILY : Verdana, sans-serif;
	FONT-SIZE : 9pt;
	FONT-WEIGHT : bold;
	MARGIN-LEFT : 19px;
        BACKGROUND : #cccc66;
        ALIGN : left;
}

.TableDarkDesc
{
	FONT-FAMILY : Verdana, sans-serif;
	FONT-SIZE : 70%;
	MARGIN-LEFT : 9px;
        BACKGROUND : #ffffcc;
	COLOR : #003366;
}

.TableLightDesc
{
	COLOR : black;
	FONT-FAMILY : Verdana, sans-serif;
	FONT-SIZE : 70%;
	MARGIN-LEFT : 19px;
        BACKGROUND : #ffffcc;
}

.RemarkHdr  {
	FONT-FAMILY : Verdana, sans-serif;
	FONT-SIZE : 70%;
	FONT-WEIGHT : bold;
	MARGIN-LEFT : 30px;
	MARGIN-TOP : 18px;
}

.Remarks  {
	FONT-FAMILY : Verdana, sans-serif;
	FONT-SIZE : 70%;
	MARGIN-LEFT : 50px;
	MARGIN-TOP : 12px;
}

.RemarkHdrX
{
	FONT-WEIGHT: bold;
}

.Namespace  {
	COLOR : #003366;
	FONT-FAMILY : Verdana, sans-serif;
	FONT-SIZE : 70%;
	FONT-WEIGHT : bold;
	MARGIN-LEFT : 8px;
	MARGIN-TOP : 13px;
}

.NamespaceChild  {
	COLOR : #003366;
	FONT-FAMILY : Verdana, sans-serif;
	FONT-SIZE : 70%;
	MARGIN-LEFT : 8px;
	MARGIN-TOP : 11px;
	FONT-WEIGHT : normal;
}

.linkbuttons  {
	COLOR : #003366;
	FONT-FAMILY : Verdana, sans-serif;
	FONT-SIZE : 70%;
	MARGIN-TOP : 3 px;
	POSITION:relative; top:0;
	BACKGROUND-COLOR: #99CCCC;
	BORDER-BOTTOM: 1 solid #808080;
	
	PADDING-BOTTOM: 4; 
	PADDING-TOP: 2; 
	WIDTH: 210;
}

a	{ 
color : #6600ff;
	 TEXT-DECORATION: underline;
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
Australia Australia
I am a Software Engineer/Consultant. My work is focussed on helping teams to get more out of their work. So I teach how to do requirements, analysis and design in a format that is easy to understand and apply.
I help with testing too, from starting developers on automated unit testing to running whole testing teams and how they cooperate with development.

For really big projects I provide complete methodologies that support all of the lifecycle.

For relaxation I paddle a sea kayak around Sydney and the Central Coast or write utilities on rainy days to make my life easier.

Comments and Discussions