2009-07-14 20 views
6

どのようにして、同じAPIを使用してhostコマンドと同様の機能を得ることができますか?私はgethostbyname()によって与えられたちょうどIPアドレスより多くの情報が必要です;具体的には、SMTP関連のデータです。LinuxでC/C++を使用してDNSルックアップを実行するにはどうすればよいですか?

+0

* smtp-related *と言えば、ドメインのMXレコードですか? – DaveR

+0

http://stackoverflow.com/questions/1093410/pulling-mx-record-from-dns-serverといくつかのotehrsの複製 – Alnitak

答えて

15

ブロッキング(同期)クエリがOKの場合は、res_query()を使用し、プログラムを-lresolvとリンクしてください。

len = res_query(host, C_IN, T_MX, &answer, sizeof(answer)); 
0

私はこのためにC標準ライブラリに関数があるとは思わないが、多くのスクリプト言語にはこの機能が組み込まれています。たとえば、PerlはNet::DNSパッケージを持っています

use Net::DNS; 
my @mx = mx("example.com"); 
foreach $host (@mx) { 
    print $host; 
} 

あなたはCでこれを行うために必要がある場合は、簡単にGoogleはあなたが使用することができますそこにいくつかのCライブラリを示しています

1

私はFireDNSを提案します。これは、あらゆる種類のDNSクエリに対して非常に高速なCライブラリです。

+1

プロジェクトは放棄されています(2004年の最後のリリース)、残念ながらダウンロードリンクは機能しませんhttp://www.firestuff.org/)... – Destroyica

0

そして、あなたはほぼ確実にMXレコードを検索すべきではないメールリレーを書いている場合を除き、私は、追加します - あなたの代わりに、ユーザが設定したメールリレーへのメールを渡す必要があります。

1

それは私が質問が古いであることを知っているが、私は長い間、DNSライブラリを検索しましたし、ここですべての答えは、私だけをスタブ非同期要求

+1

ps、私はFireDnsのほうが好きです。なぜなら、はるかに簡単で分かりやすいからです。 – Finaldie

1

することができますので、私はadnsが好き。私はadns/udnsのような図書館は人間のために書かれていないと思う。 FireDNSは長い間ダウンロードリンクを作っていない。

非常に簡単なインターフェイスで、私はposlibを最高のdnsライブラリとして見つけました。

関連する問題