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.
[slide]http://www.cubeupload.com/files/8a200csws.png[/slide]
All that in 90 lines of code. C# <3.
PHP:
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 (true) c.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(data, 0, data.Length);
}
}
c.WriteLine(
"[{0:HH:mm}] Handled request for {1}",
DateTime.Now,
request.LocalEndPoint.Address
);
}
}
}
}
All that in 90 lines of code. C# <3.