MFCの通信クラスを使用したプログラムを書いています
HTTPでサーバからデータを取得するのですが、このときドメイン、IP変換で使用するDNSキャッシュを
使用せずに毎回DNSサーバに問い合わせる作りにしたいのですが方法がわかりません。
知っている人がいましたらご教授お願いできないでしょうか?
既存のソースで通信をキャプチャーしたところ、初回はDNSに問い合わせを行っていますが、2回目以降はキャッシュを使用しているのか
直接IPで通信を行っています。
・ソースは省いていますが大体の流れは以下になります。
CInternetSession cSession(_T("hoge"), 0, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, INTERNET_FLAG_DONT_CACHE);
//HTTPコネクションを取得
//strServer,usPort strObjectはAfxParseURL(strURL, dwServiceType, strServer, strObject, usPort)から取得した値です
CHttpConnection *pHttp = cSession.GetHttpConnection (strServer, INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_EXISTING_CONNECT ,
usPort, NULL, NULL);
CHttpFile *pHttpFile = pHttp->OpenRequest(
CHttpConnection::HTTP_VERB_POST,
strObject,
NULL,
1,
NULL,
NULL,
INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE | INTERNET_FLAG_KEEP_CONNECTION);
pHttpFile->AddRequestHeaders(_T("Content-Type:application/octet-stream"));
pHttpFile->AddRequestHeaders(_T("Connection:Keep-Alive"));
if(!pHttpFile->SendRequest(NULL,0,pSendBuf,unSendSize)){
//インスタンスのはき
return false;
}
DWORD dwFlagSec;
pHttpFile->QueryOption(INTERNET_OPTION_SECURITY_FLAGS, dwFlagSec);
dwFlagSec |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
pHttpFile->SetOption(INTERNET_OPTION_SECURITY_FLAGS, dwFlagSec);
//リクエストの送信
pHttpFile->AddRequestHeaders(_T("Content-Type:application/x-www-form-urlencoded"));
pHttpFile->AddRequestHeaders(_T("Connection:Keep-Alive"));
CString strReq = _T("hogehoge"); //仮
pHttpFile->SendRequest(NULL,0,strReq.GetLength());
DWORD dwStatusCode;
pHttpFile->QueryInfoStatusCode(dwStatusCode);
以下データの受信処理
DNSキャッシュを使用しない通信方法
-
へにっくす
Re: DNSキャッシュを使用しない通信方法
以下のページが参考になるでしょうか?
レジストリをいじれば、そういう動作をさせることが可能なようです。
いずれにしろ、MFCのライブラリではできないことかと
Windows でクライアント側の DNS キャッシュを無効にする方法
http://support.microsoft.com/kb/245437/ja
レジストリをいじれば、そういう動作をさせることが可能なようです。
いずれにしろ、MFCのライブラリではできないことかと
Windows でクライアント側の DNS キャッシュを無効にする方法
http://support.microsoft.com/kb/245437/ja