Ниже приведена функция vb.net, которая возвращает следующий доступный порт из диапазона номеров портов, чтобы вы могли использовать следующий доступный порт, чтобы открыть сокет или сделать все необходимое.
Я не пытался открыть несколько клиентов на одном и том же номере порта или что-то в этом роде.Мне просто нужно выяснить, какие номера портов доступны для использования, и указать клиенту использовать этот номер порта.Это было для использования в среде Citrix, где несколько клиентов пытались открыть один и тот же порт из разных пользовательских сеансов;Использование кода ниже позволяет нам решить проблему.
''' <summary>
''' Routine to get the next available port number from a range of port numbers
''' </summary>
Private Function GetPortNumberFromRange(ByVal startPort As Integer, ByVal endPort As Integer) As Integer
Dim ipProperties = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties()
Dim tcpInfos = ipProperties.GetActiveTcpConnections()
Dim portRange = Linq.Enumerable.Range(startPort, endPort).ToList
For Each tcpInfo In tcpInfos
portRange.Remove(tcpInfo.LocalEndPoint.Port)
Next
If portRange.Count > 0 Then
Return portRange(0)
End If
End Function