Использование диапазона номеров портов в классе TcpChannel - PullRequest
0 голосов
/ 09 июля 2010

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

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

С уважением
Noel

Ответы [ 3 ]

2 голосов
/ 06 октября 2010

Ниже приведена функция 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 голосов
/ 09 июля 2010

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

0 голосов
/ 09 июля 2010

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

...