어떤 포트 번호 .NET 리모 팅이 할당하는지 어떻게 찾습니까?

StackOverflow https://stackoverflow.com/questions/412305

  •  03-07-2019
  •  | 
  •  

문제

Port Zero IE를 사용하여 TCPCHANNED를 작성하여 .NET 리모 팅이 사용 가능한 포트를 할당하도록 허용하는 경우 어쨌든 할당 된 포트 번호를 결정할 수 있습니까?

채널을 만들 때 포트 번호를 지정할 수 있다는 것을 알고 있지만 동일한 Citrix 서버에서 여러 인스턴스를 실행하고 싶지 않기 때문에이 작업을 수행하고 싶지 않습니다. 각 인스턴스는 다른 포트에서 듣습니다.

이상적으로 나는 많은 포트를 예약하는 데 어려움을 겪고 어떤 포트가 할당되었는지 추적하는 데 어려움을 겪고 싶지 않습니다. 포트에 자동으로 할당되도록하고 싶습니다. 그러나 어떤 포트 번호가 할당되었는지 알 수 있어야합니다.

도움이 되었습니까?

해결책 2

내 해결책은 다음과 같습니다.

  • 다음 코드를 사용하여 클라이언트 응용 프로그램의 각 인스턴스에 대해 사용하지 않은 포트를 식별하십시오.

    IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 0);
    
    using (Socket socket = new Socket(
                 AddressFamily.InterNetwork, 
                 SocketType.Stream, 
                 ProtocolType.Tcp))
    {
        socket.Bind(endPoint);
        IPEndPoint local = (IPEndPoint)socket.LocalEndPoint;
        return local.Port;
    }
    
  • 사용하지 않은 포트 번호를 클라이언트 응용 프로그램에 저장하십시오.

  • TCPCHANNEL을 설정하고 Activator.getObject를 호출 할 때 사용할 명령 줄 매개 변수를 통해 저장된 포트 번호를 호스트 응용 프로그램에 전달하십시오.

  • 전달 된 URL의 클라이언트 애플리케이션에 저장된 포트 번호를 활성화기에 사용하십시오. getObject.

다른 팁

나는 이것에 대해 많이 알지 못하지만 MSDN에서 탐색하는 것은 Post Zero Usage Return이 TcpServerChannel, a TcpServerChannel a GetChannelUri() 방법; 여기에는 포트 번호가 포함됩니까? (구문 분석해야 할 수도 있습니다 new Uri(s).Port).

다시 한번, 완전한 추측 작업. 그렇지 않다면, 그냥 말하십시오; -p

AAKASHM에 의해 편집 할 수 있습니다 이것은 올바른 접근법입니다. 수행원

var channel = new TcpChannel(0);

포함 된 서버 채널의 동적으로 할당 된 게시물은 다음과 같이 검색 할 수 있습니다.

var channelData = (ChannelDataStore)channel.ChannelData;
var port = new System.Uri(channelData.ChannelUris[0]).Port;

추악한 캐스트가 필요합니다 TcpChannel.ChannelData 속성은 다음과 같이 입력됩니다 object...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top