Repository URL to install this package:
Version:
1.3.1 ▾
|
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
namespace Fluctio.FluctioSim.EditorUtils.Http
{
public static class PortFinders
{
public static Func<int?> Constant(int port)
{
return () => port;
}
public static Func<int?> FromList(IEnumerable<int> possibleValues)
{
return () =>
{
foreach (var port in possibleValues)
{
var listener = new TcpListener(IPAddress.Loopback, port);
try
{
listener.Start();
return port;
}
finally
{
listener.Stop();
}
}
return null;
};
}
// https://stackoverflow.com/a/3978040/6702274
// https://stackoverflow.com/a/150974/6702274
// https://github.com/googlesamples/oauth-apps-for-windows/blob/ab9373d1a470e1aecb90fb263f9daf6ebc4ff643/OAuthConsoleApp/OAuthConsoleApp/Program.cs#L59
public static int? SelectedBySystem()
{
var listener = new TcpListener(IPAddress.Loopback, 0);
try
{
listener.Start();
var endPoint = (IPEndPoint)listener.LocalEndpoint;
var port = endPoint.Port;
return port;
}
catch
{
return null;
}
finally
{
listener.Stop();
}
}
}
}