こんにちはひろんたと申します。
LAN接続確認について質問があります。
LANが2系統ありそれを切り替えるスイッチを作成しました。
切り替えるたびにIPConfig /Release,ipconfig /Renewを発行して
DHCPよりIPを取得しています。
LANを切り替えてすぐはリンクしていないのでリンク後にipconfigをうつように
したく、最初はSLEEPでやっていたのですがパソコン(LANカード?)によって
そろぞれリンクを開始する時間がちがいます。
そこで過去ログを参考にLANの接続確認をやってDo〜Loopで接続されるまで待つ方法でうまくいきました。が、OSが2000だと接続の有無にかかわらず接続されているように認識されます。
Dim lngState As Long
Dim Ret As Long
Ret = InternetGetConnectedState(lngState, 0)
MsgBox Ret
このコードですがXPではちゃんとうごくのに2000だと駄目です。
その他INTERNET_CONNECTION_LANでもやはり同じ結果です。
なにか検出する方法はないでしょうか?
よろしくお願いします。
OS:XP&2000,VB6で作成しています。
・メディア検出機能有無
・サービス(DHCP Client)が起動しているか
あたりの確認はしていますか?
メディア検出機能についてはこちら。
http://support.microsoft.com/default.aspx?scid=kb;ja;239924&Product=winxpINT
ひろ様
ご助言ありがとうございます。
メディアの検出はONになっています。
OFFにしたらIPが取得できなかったので動いています。
またサービス(DHCPClient)も問題なく動いています。
なにか勘違いがあるとおもわれますので追記します。
1.2系統のLANそれぞれからはちゃんとIPがもらえる状態です。
2.同PC(ディアルブート)でXPでは正常動作しますが2000のみ不可です
(違うPCでももちろん試しています。)
3.LANを切り替えた直後はリンクしていないのでIPが正常にもらえませんので
リンク発生後にRelase,Renewをかけたいのですが2000だと未接続にもかかわらず
接続されている状態が返ってきますのでDo〜Loopをすぐに抜けてしまうので
IPが正常に取得されるまでかなりの時間がかかります。
4.簡単に言うとLANケーブルが抜けていることを正常にチェックできれば
2000でも問題ないことになると思います。
(スイッチを切り替えるとはLANが2系統ありそれぞれを抜き差ししている状態と
まったく同じ状態です。)
以上よろしくお願いします。
自己解決しました。
GetIfTableのdwOperStatusでリアルタイムに
接続の有無を確認できました。
ツイート | ![]() |