2011-02-07 4 views
2

Windows API 함수를 통한 네트워크 공유 목록 검색 NetShareEnum 또는 WNetEnumResource는 요청을 완료하는 데 최대 60 초가 걸립니다. 어쩌면 누군가가 왜 그렇게 느린 지 알 수 있을까요? 어쩌면 일부 API/라이브러리 (예 : SMB)를 사용하여 정상적인 속도로 공유를 열거 할 수 있습니까?Windows에서 네트워크 공유 열거가 너무 느린 이유는 무엇입니까?

+0

Windows가 멍청하기 때문에 솔직히 말해서. –

답변

1

호스트가 사용할 수 없거나 (예를 들어 로그인 자격 증명을 요구하는) 호스트가 응답하지 않는 경우 Windows는 네트워크에서 알려진 모든 공유에 대해 제한 시간 제한을 초과 할 때까지 기다립니다 (호스트 당 다중이 될 수 있음). Windows의 기본 시간 제한은 크게 다릅니다.

시간 초과를 50ms (LAN에서 절대로 초과해서는 안됨)로 줄이면 도움이 될 수 있습니다. 궁극적으로 테스트되는 호스트의 양에 따라 다릅니다.

API에 대한 대안에 관해서는 도움이되지 못합니다. 죄송합니다.

+0

이 60 초는 완벽하게 응답하고 공유 목록을 보여주는 컴퓨터를위한 것입니다. 타임 아웃을 유발할 수있는 "자격 증명"문제는 무엇입니까? – grigoryvp

+0

공유에 로그인 정보가 필요하고 어딘가에 저장되어 있지 않은 경우 익명으로 로그인을 계속할지, 아니면 단순히 건너 뛸지 (예상되는 동작이지만 Windows의 네트워크 길은 여러 곳에서 이상합니다.) 그러나 호스트가 완벽하게 잘 응답한다면, 나는 그것이 내가 말한 것 중 하나라고 생각하지 않습니다. – pdinklag

1

시도해보고 싶은 뭔가가 있는데, 이는 Linux와 동일한 공유를 열거하는 것입니다 (LiveCD를 사용할 수 있습니다). 내 테스트에서 나는 라우터가 또한 가능한 네트워크 공유를 요청 받았다는 것을 알았다. (나의 라우터는 리눅스를 실행하고 그것은 나의 ISP가 나에게 주었던 것이었다.

Windows가 네트워크 공유기에 오랫동안 네트워크 공유를 요청했을 수 있습니다. (발생하지 않아야합니다 ...) 공유에 응답하도록 동 기적으로 대기 중입니다.

(이 API를 동기식으로 설계 한 사람은 누구입니까?)

관련 문제