2009-09-02 6 views
0

지금, 내 응용 프로그램은 cURL 아래의 Windows에서 c-ares 비동기 DNS 해결 프로그램 라이브러리를 사용하고 있으며 다른 Windows 응용 프로그램과 다르게 동작한다고 불평하는 사용자가 있습니다. 한 특정 사용자는 "다른 응용 프로그램이 Microsoft DNS 클라이언트를 사용하고 있습니다"라고 말하면서 아무런 문제가 발생하지 않습니다."Microsoft DNS 클라이언트"대 getaddrinfo?

cURL 자체에는 스레드에서 getaddrinfo()를 사용하는 비동기 DNS 구현이 있습니다. 내 생각 엔 DNS 클라이언트와 그 호스트 (예 : DnsQuery)를 사용하는 것과 동등한 동작이 될 것입니다.

그래서 getaddrinfo()의 동작에 실질적인 차이가 있는지 묻습니다. Lazyweb Win32 API의 실제 Dns * API 사용

답변

1

소스를 보면 실제로 호스트 이름을 쿼리하기위한 dns 프로토콜을 구현 한 것으로 보이며 (직접 getaddrinfo를 호출하지는 않습니다.) WINS 조회와 같은 것을 놓치고, 다른 종류의 물건 창은 이름을 찾기 위해 할 수 있습니다.

+0

알기. 그래서 내 질문에, 그것을 사용하는 잘 지원되는 방식으로 getaddrinfo를 사용하고 있습니까? 아니면 대부분의 Windows 응용 프로그램이 Win32 API DNS API를 사용합니까? –

+0

예, Windows에서는 joe average applications에 대해 ares를 사용하지 마십시오. – Lothar

0

Windows에서 DNS 쿼리를 수행하는 가장 쉬운 방법은 DNSQuery (및 유도 된 함수 utf8, wbytes, ansi)를 사용하는 것입니다. 비동기 해상도가 필요한 경우가 아니라면이 경우 C-ares 또는 기타 유사한 API를 계속 사용하는 것이 좋습니다.

나는 WINS 또는 다른 Windows 특정 해상도 (DNS 사양의 일부는 아님)가 C-Ares에 의해 보호되지 않는지 확실하지 않습니다. 우리에게 예제를 줄 수 있다면 도움이 될 것입니다. 어쩌면 우리는 그것들을 c-ares로 구현할 수도 있습니다.