Created
September 16, 2018 12:26
-
-
Save NikolayIT/91dee5fea4386199ea6171de80eb2be4 to your computer and use it in GitHub Desktop.
Simple HTTP server in .NET Core using TcpListener
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
namespace SimpleHttpServer | |
{ | |
using System; | |
using System.Net; | |
using System.Net.Sockets; | |
using System.Text; | |
public static class Program | |
{ | |
public static void Main(string[] args) | |
{ | |
IHttpServer server = new HttpServer(9876); | |
server.Start(); | |
} | |
} | |
public interface IHttpServer | |
{ | |
void Start(); | |
} | |
public class HttpServer : IHttpServer | |
{ | |
private readonly TcpListener listener; | |
public HttpServer(int port) | |
{ | |
this.listener = new TcpListener(IPAddress.Parse("127.0.0.1"), port); | |
} | |
public void Start() | |
{ | |
this.listener.Start(); | |
while (true) | |
{ | |
var client = this.listener.AcceptTcpClient(); | |
var buffer = new byte[10240]; | |
var stream = client.GetStream(); | |
var length = stream.Read(buffer, 0, buffer.Length); | |
var incomingMessage = Encoding.UTF8.GetString(buffer, 0, length); | |
var result = "<h1>Hello, world!</h1>"; | |
stream.Write( | |
Encoding.UTF8.GetBytes( | |
"HTTP/1.0 200 OK" + Environment.NewLine | |
+ "Content-Length: " + result.Length + Environment.NewLine | |
+ "Content-Type: " + "text/plain" + Environment.NewLine | |
+ Environment.NewLine | |
+ result | |
+ Environment.NewLine + Environment.NewLine)); | |
Console.WriteLine("Incoming message: {0}", incomingMessage); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment