2012-02-29 148 views
0

我試圖通過使用res_query來實現簡單的DNS SRV查詢。我對res_query部分代碼如下:爲什麼SRV res_query總是返回-1?

char* target; 
short* port; 

union { 
    HEADER hdr; 
    u_char buf[1024]; 
} response; 

ns_msg handle; 
ns_rr rr; 
u_char buf[256], *p; 
int t, len, priority, weight; 

if ((len = res_query(query, C_IN, ns_t_srv, (u_char *)&response, sizeof(response))) <0) { 
    cout << "res_query returned -1, no answer" << endl; 
    return 0; 
} 

這僅僅是代碼的一部分,但我想有所有需要的東西做res_query。每次我執行SRV查詢時,res_query返回'-1',這意味着它失敗。問題在我的res_query中,還是我在做其他問題?

我試着去做www.example.com的SRV查詢。

回答

0

res_query將返回-1,如果沒有找到匹配的記錄。

除此之外,您的代碼對我來說工作正常,雖然OSX需要​​而不是C_IN

嘗試使用_nicname._tcp.us.而不是www.example.com進行測試。

+0

我試過對現在的幾個域做SRV查詢,當一些站點返回SRV記錄時,它似乎只是隨機的。建議的'_nicname._tcp.us'首先沒有返回任何內容,但過了一段時間,它給了我一個答案。當我嘗試使用'dig'和'nslookup'命令來執行SRV查詢時發生了同樣的情況。我認爲每個域在返回SRV查詢時至少會返回一些內容。我還發現了其他一些建議的網站,比如'_sip._udp_columbia.edu',它的行爲方式完全一樣:有時會返回記錄,有時卻不會。 – zaplec 2012-03-02 07:36:19