63 lines
2.1 KiB
C#
63 lines
2.1 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Net.NetworkInformation;
|
|||
|
using System.Net.Sockets;
|
|||
|
using System.Threading;
|
|||
|
|
|||
|
namespace Tesses.WebServer
|
|||
|
{
|
|||
|
public static class EasyServerExtensions
|
|||
|
{
|
|||
|
public static void StartServer(this IServer hdlr,int port=49299)
|
|||
|
{
|
|||
|
using(var ct=new CancellationTokenSource())
|
|||
|
{
|
|||
|
Console.CancelKeyPress += (sender,e)=>{
|
|||
|
ct.Cancel();
|
|||
|
};
|
|||
|
|
|||
|
HttpServerListener server1=new HttpServerListener(port,hdlr);
|
|||
|
|
|||
|
("http",port).PrintAllIps();
|
|||
|
ConsoleColor c=Console.ForegroundColor;
|
|||
|
Console.ForegroundColor = ConsoleColor.Red;
|
|||
|
Console.WriteLine("Almost Ready to Listen");
|
|||
|
Console.ForegroundColor=c;
|
|||
|
server1.Listen(ct.Token);
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
static Random r=new Random((int)(DateTime.Now.Ticks % int.MaxValue));
|
|||
|
|
|||
|
|
|||
|
public static void PrintAllIps(this (string scheme,int port) url)
|
|||
|
{
|
|||
|
var cl=Console.ForegroundColor;
|
|||
|
Console.ForegroundColor=ConsoleColor.Blue;
|
|||
|
Console.WriteLine("Interfaces:");
|
|||
|
Console.ForegroundColor=cl;
|
|||
|
foreach(NetworkInterface iface in NetworkInterface.GetAllNetworkInterfaces())
|
|||
|
{
|
|||
|
if(iface.OperationalStatus == OperationalStatus.Up){
|
|||
|
var fg=Console.ForegroundColor;
|
|||
|
Console.ForegroundColor=ConsoleColor.Green;
|
|||
|
Console.Write(iface.Name);
|
|||
|
Console.ForegroundColor=fg;
|
|||
|
Console.Write(": ");
|
|||
|
Console.ForegroundColor =ConsoleColor.Magenta;
|
|||
|
List<string> ips=new List<string>();
|
|||
|
foreach(var item in iface.GetIPProperties().UnicastAddresses)
|
|||
|
{
|
|||
|
if(item.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork){
|
|||
|
ips.Add($"{url.scheme}://{item.Address.ToString()}:{url.port}/");
|
|||
|
}
|
|||
|
}
|
|||
|
Console.WriteLine(string.Join(" , ",ips));
|
|||
|
|
|||
|
|
|||
|
Console.ForegroundColor =fg;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|