C# 使用 TcpListener實作簡易HTTP SERVER(輸出簡單JSON)
C# 使用 TcpListener實作簡易HTTP SERVER(輸出簡單JSON)
資料來源: https://gist.github.com/NikolayIT/91dee5fea4386199ea6171de80eb2be4
GITHUB: https://github.com/jash-git/CS_SimpleHttpServer
Code
using System.Net;
using System.Net.Sockets;
using System.Text;
/*
資料來源: https://gist.github.com/NikolayIT/91dee5fea4386199ea6171de80eb2be4
*/
namespace SimpleHttpServer
{
public static class Program
{
public static void Main(string[] args)
{
int Port = 8001;
Console.WriteLine($"Listening on port {Port}...");
IHttpServer server = new HttpServer(Port);
server.Start();
}
}
public interface IHttpServer
{
void Start();
}
public class HttpServer : IHttpServer
{
private readonly TcpListener listener;
private int NO;
public HttpServer(int port)
{
this.listener = new TcpListener(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 = String.Format("Client connected with IP {0}", ((IPEndPoint)client.Client.RemoteEndPoint).Address) + "\n" + Encoding.UTF8.GetString(buffer, 0, length);
var result = String.Format("{{\"NO\":\"{0:0000}\",\"En_Name\":\"jash.liao\",\"CH_Name\":\"小廖\"}}", NO);//@"{""NO"":""001"",""En_Name"":""jash.liao"",""CH_Name"":""小廖""}";
NO++;
stream.Write(
Encoding.UTF8.GetBytes(
"HTTP/1.0 200 OK" + Environment.NewLine
+ "Content-Length: " + result.Length + Environment.NewLine
+ "Content-Type: " + "application / json" + Environment.NewLine
+ Environment.NewLine
+ result
+ Environment.NewLine + Environment.NewLine));
Console.WriteLine("Incoming message: \n{0}", incomingMessage);
Console.WriteLine("{0}", result);
}
}
}
}
PS.
01.全部都是自己架床疊屋(自己在TCP層上實作簡易HTTP)
02.由於從TCP層實作HTTP,所以可以在沒有賦予EXE擁有系統管理員身分執行(UAC/盾牌)[Windows 權限]下監聽所有網卡IP
03.使用curl.exe/一般瀏覽器/apache-jmeter(壓力測試TOOL) 測試會動
04.可以用來製作簡易web api server
05.跨電腦測試時藥劑得先把對應網路埠打開
One thought on “C# 使用 TcpListener實作簡易HTTP SERVER(輸出簡單JSON)”
C# WinForms(表單) 使用 TCPLISTENER實作簡易HTTP SERVER(輸出簡單JSON)
https://github.com/jash-git/CS_WinForms_SimpleHttpServer
PS.由上面改寫 透過THREAD將其包覆 讓UI不被咬住