使ったことがないので質問者様の要望に添えれるかわかりませんが
System.Net.NetworkInformation.IPGlobalProperties
クラスを使用すれば現在使用中のポートを見ることが出来るのでこれで取得できたポート以外を使用するのはどうでしょうか
CSharp
1var ipGlobalProp = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties();
2var usedPorts = ipGlobalProp.GetActiveTcpConnections();
3foreach (var ports in usedPorts)
4{
5 Console.WriteLine(ports.LocalEndPoint.Port); //使用中のポートを列挙
6}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。