11

私のC#サービスは定期的にポーリングする必要がありますnslookup host server。現在、Processバッチスクリプトを実行するを生成します。パフォーマンス上の理由から、いくつかを使用してこのチェックを行うことを検討していますAPI。しかし、問題は、たとえば、チェックをSystem.Net.Dns.GetHostAddressesエミュレートすることはできますが、 (秒パラメーターなしでは)エミュレートできないことです。nslookup hostnslookup host server

私は似たようなSOの質問をたくさん見てきましたが、どれも私の問題を解決していないようです。

重いサードパトリーライブラリを使用せずに実行する方法はありますnslookup host serverか?C#

4

3 に答える 3

12

問題は解決しました!

http://msdn.microsoft.com/en-us/library/ms682016(VS.85).aspx

「ここの素晴らしい例」セクションを参照してください

[DllImport("dnsapi", EntryPoint="DnsQuery_W", CharSet=CharSet.Unicode, SetLastError=true, ExactSpelling=true)]
private static extern int DnsQuery([MarshalAs(UnmanagedType.VBByRefStr)]ref string pszName, QueryTypes wType, QueryOptions options, int aipServers, ref IntPtr ppQueryResults, int pReserved);
[DllImport("dnsapi", CharSet=CharSet.Auto, SetLastError=true)]
private static extern void DnsRecordListFree(IntPtr pRecordList, int FreeType);

...
于 2011-03-31T17:48:10.890 に答える
1

私はしばらく前にこれを調べました。標準のクラスライブラリでは不可能であるため、これを適切に行うには外部コンポーネントを使用する必要があります。

あなたが利用できる無料と有料の選択肢がたくさんあります。私の実装は、CodeProjectへの投稿に基づいていました。これは非常にうまく機能しました。 .NET用のDNSクライアントライブラリ(kprobstでも言及されています)は、私が終了した後にリリースされました。または、最初はこれを使用していました。

于 2011-03-29T07:39:47.877 に答える
0

ローカルマシン構成で指定されたものとは異なるDNSサーバーを使用する必要がなかったため、フレームワークを直接使用してこれを行う方法がわかりません。ただし、このライブラリを試してみることをお勧めします。私はこれを使用したことはありませんが、私が知る限り、渡したホスト名の解決に使用するDNSサーバーを指定できます。

于 2011-03-29T06:11:04.957 に答える