2010-03-16 8 views
8

가능한 포트 찾기 (나는 그것을 필요로하기 때문에이 나는 이것에 대한 어떤 좋은 솔루션을 찾을 수 없습니다) C#에서와 나는 두 가지 질문이 있습니다내가 FTP 서버 라이브러리를 쓰고 있어요

  • 방법 IPEndPoint을 수행을 예를 들어, new IPEndPoint(IPAddress.Any, 0)을 할 때 무료 포트를 찾으십니까?

  • 범위가없는 포트 (예 : 1023에서 65535), GetActiveTcpConnections없이 찾을 수 있습니까? 느리기 때문에 더 빠른 방법이 필요합니다.

+1

가능한 [중복 된 TCP 포트 찾기] (http://stackoverflow.com/questions/138043/find-the-next-tcp-port-in-net) –

답변

13

할당되지 않은 포트 (0)에서 수신을 시작하면 운영 체제 (또는 더 정확하게는 TCP/IP 스택)에 의해 할당됩니다. 스택이 모든 포트를 관리하므로 스택을 자유롭게 할당 할 수 있습니다.

그래서 연결을 청취 한 다음 LocalEndpoint 속성의 포트를 확인하여 클라이언트에 전달하십시오. TcpListener documentation에는 이에 대한 자세한 정보가 들어 있습니다.

무료 범위를 찾으려면 전체 범위를 반복하고 각 범위에서 청취를 시작하면됩니다. 성공하면 무료 포트를 발견하고 루프를 종료 할 수 있습니다. 그렇지 않다면 루프를 계속하십시오. 그렇지 않으면 다른 프로세스 나 심지어는 동일한 자유 포트를 평가하는 스레드의 경쟁 조건으로 인해 실행할 수 있기 때문에 유일하게 신뢰할 수있는 방법입니다. 다른 코드는 사용할 수 없지만 "무료"로 사용할 수 있습니다. 포트를 사용할 수 있습니다.

관련 문제