2012-02-29 12 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の代わりに​​が必要ですが、あなたのコードは問題なく動作します。

www.example.comの代わりに_nicname._tcp.us.でテストを試してください。

+0

SRVクエリをいくつかのドメインに実行しようとしましたが、一部のサイトでSRVレコードが返されたときにランダムに表示されるようです。提案された '_nicname._tcp.us'は何も返されませんでしたが、いつかそれは私に答えを与えました。 'dig'コマンドと' nslookup'コマンドでSRVクエリを実行しようとしたときも同じことが起こりました。私は、すべてのドメインがSRVクエリを取得したときに少なくとも何かを返すと考えました。また、 '_sip._udp_columbia.edu'のような他のいくつかの提案されたサイトを見つけました。まったく同じように動作します:時にはレコードを返し、時にはそうではありません。 – zaplec

関連する問題