Skip to content

Instantly share code, notes, and snippets.

@jrusbatch
Created December 5, 2012 02:17
Show Gist options
  • Save jrusbatch/4211535 to your computer and use it in GitHub Desktop.
Save jrusbatch/4211535 to your computer and use it in GitHub Desktop.
Find an Available Port with C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.NetworkInformation;
using System.Net;
namespace AvailablePort
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(GetAvailablePort(1000).ToString());
Console.ReadLine();
}
/// <summary>
/// checks for used ports and retrieves the first free port
/// </summary>
/// <returns>the free port or 0 if it did not find a free port</returns>
public static int GetAvailablePort(int startingPort)
{
IPEndPoint[] endPoints;
List<int> portArray = new List<int>();
IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties();
//getting active connections
TcpConnectionInformation[] connections = properties.GetActiveTcpConnections();
portArray.AddRange(from n in connections
where n.LocalEndPoint.Port >= startingPort
select n.LocalEndPoint.Port);
//getting active tcp listners - WCF service listening in tcp
endPoints = properties.GetActiveTcpListeners();
portArray.AddRange(from n in endPoints
where n.Port >= startingPort
select n.Port);
//getting active udp listeners
endPoints = properties.GetActiveUdpListeners();
portArray.AddRange(from n in endPoints
where n.Port >= startingPort
select n.Port);
portArray.Sort();
for (int i = startingPort; i < UInt16.MaxValue; i++)
if (!portArray.Contains(i))
return i;
return 0;
}
}
}
@TamasSzalisznyi
Copy link

I'm using to get a free port as @marbel82 suggested and it is working just fine

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment