2010-07-09 2 views
0

Можно ли указать диапазон номеров портов в классе TcpChannel, а не фиксированный порт или номер случайного порта.Использование диапазона номеров портов в классе TcpChannel

В настоящее время мы используем номер фиксированного порта для удаленного канала, но теперь, поскольку приложение развертывается в среде citrix, нам необходимо использовать ряд номеров портов, чтобы они соответствовали их среде безопасности. Использование нуля в качестве номера порта выделяет случайный порт, который затем будет заблокирован их брандмауэром, поэтому искал что-то, что может можно указать диапазон портов numeers для использования (например, 9000 - 9500)

С наилучшими пожеланиями
Noel

ответ

2

Ниже приведена функция 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 
0

AFAIK, вы не можете указать это в своем файле конфигурации, но это, безусловно, может быть сделано в коде.

+0

Спасибо Стивену, выяснили, как проверить свободные порты, используя класс System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties. Cheers Noel – Bigtoe

0

Канал (включенный TcpChannel) предназначен для прослушивания одного порта. Если вы хотите прослушивать несколько портов, вам понадобится несколько каналов для их поддержки.

Смежные вопросы