Home→Forums→MonoBrick EV3 Firmware→Webserver→Reply To: Webserver
December 30, 2014 at 19:32
#5164
Jacek S
Participant
Hi Again,
I have created own simple HTTP server. Now I have great performance 🙂
class Program
{
static void Main(string[] args)
{
HttpListener httpListener = new HttpListener();
httpListener.Prefixes.Add("http://*:9090/");
httpListener.Start();
var run = true;
(new ButtonEvents()).EscapePressed += () => run = false;
while (run)
{
var context = httpListener.GetContext();
Process(context);
}
}
public static string RootPath
{
get
{
string filePath = new Uri(Assembly.GetExecutingAssembly().CodeBase).AbsolutePath;
return Path.GetDirectoryName(filePath) + "/" ;
}
}
static string GetContentType(string ext)
{
switch (ext.ToLower())
{
case ".js":
return "text/javascript";
case ".htm":
case ".html":
return "text/html";
case ".png":
return "image/png";
case ".jpg":
return "image/jpg";
case ".css":
return "text/css";
default:
return "application/octet-stream";
}
}
private static void Process(HttpListenerContext context)
{
string reqPath = context.Request.Url.AbsolutePath;
//Console.WriteLine(reqPath);
if (reqPath == "/truck/joypos")
{
context.Response.StatusCode = 200;
context.Response.Close();
return;
}
reqPath = Path.Combine(RootPath, reqPath.Substring(1));
if (!File.Exists(reqPath))
{
context.Response.StatusCode = 404;
context.Response.Close();
return;
}
var contentType = GetContentType(Path.GetExtension(reqPath));
context.Response.Headers[HttpResponseHeader.ContentType] = contentType;
var content = File.ReadAllBytes(reqPath);
context.Response.OutputStream.Write(content, 0, content.Length);
context.Response.Close();
}
}
Jacek
Follow