プロが教えるわが家の防犯対策術!

NICに固定IP(192.168.~)を2つ設定してサーバーとして動作させます。

IPが1つの場合にはINADDR_ANYでbind()出来ますが、
IPが2つなので、自IP(192.168.~)でbind()するしかないと考えています。

ここで同じPC上でクライアントを動かすので、
LANケーブルが挿されていないケースも考えられます。

ところがLANケーブルを抜くと、bind()に失敗してしまいます。
他のPCでクロスケーブルでつなげると、2つともbind()は成功します。

なぜLANケーブルを抜くとbind()に失敗するのでしょうか?
またLANケーブルを抜いてbind()に成功させる方法はありますか?

どなたか詳しい方、ご教示ください。

WindowsXP SP3 Winsock2.0

A 回答 (2件)

メディア検出機能の影響じゃないですか?



Windows で TCP/IP のメディア検出機能を無効にする方法
http://support.microsoft.com/kb/239924/ja
    • good
    • 0
この回答へのお礼

メディア検出機能については知りませんでした。
メディア検出機能を無効にすることで
LANケーブルを挿してなくても無事ルーティングテーブルにIPアドレスが表示され、
またサーバ側で自IPにbind()、クライアントからの接続が出来ました。
まだまだ知らないことだらけです。
ありがとうございました。

お礼日時:2011/06/09 10:42

loopback I/Fを使わないってことでしょうか?



IPアドレスはアダプタがアクティブにならないと有効にならないのが普通ですので、ケーブル刺さないと無理でしょう。

コマンドラインでインターフェイスを有効にすることは出来た気がしますが
それで折り返せるのかどうかはやったことがありませんのでわかりません。
    • good
    • 0
この回答へのお礼

No.1の回答でなんとか解決しました。
まだまだ勉強不足なのですが、
メディア検出機能を無効にするとアダプタのリンク状態がダウンしていても
プロトコルは削除されないらしいので、IPアドレスが使えるようです。
ありがとうございました。

お礼日時:2011/06/09 10:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!