ネットワークが切れたことを感知するには?

解決


G  2005-02-15 18:23:20  No: 119653

Winsockで一度接続された状態になって
その後、送信側が一方的に遮断(何の信号も出さずに)された場合
WinsockのStateは、7(sckConnected)のままで識別できない

そこで、送信側が一方的に遮断(何の信号も出さずに)されたと言う事を
知る方法ないか教えて下さい

環境は,VB6.0  SP6  WIN2000  or  WIN2003


  2005-02-15 19:58:32  No: 119654

Winsockに詳しくない人間が発言します。ご勘弁を m(_ _)m

Timerを使用して、何秒かに1回Stateを検知してはどうですか?
sckClosingまたはsckErrorが返ってくると思いますが。
(sckClosedかもしれない。・・・どれだろう?)

ヘルプのStateプロパティ(Winsockコントロール)を参考にしました。
・・・いかがですか?


G  2005-02-15 20:04:05  No: 119655

影さん  早速の返信  有難うございます

一方的に遮断(何の信号も出さずに)するので
WinsockのStateは、7(sckConnected)のままです


。。。  2005-02-15 20:27:42  No: 119656

何らかの通信処理の中での話であれば
相手からの応答にタイムアウトを設け
ある一定時間以上無応答の場合は異常と
みなし、ポートを閉じることで対応可能
と思います。

そうした上で相手の存在を確認するには
Pingを打つ等の手段を用いればいいんじゃ
ないでしょうか。


  2005-02-15 20:41:00  No: 119657

うーん・・・。

因みに、
>一方的に遮断(何の信号も出さずに)する
とは?  現行で有り得る症例を教えて下さい。

例えば、相手方がPCの電源を落とした、とか。


ガッ  2005-02-15 21:24:51  No: 119658

…定数の名称があるということはWinsockコントロールだよな?
俺のところでは再現できないのだが、
環境を明記して、再現できるサンプルコードをもらえるとちょとうれしい。

俺の環境
WinXP(HOME)
VB6(SP6)
MSWINSCK.oca (ファイルバージョン6.01.9782)


G  2005-02-15 23:09:54  No: 119659

影さん
現行で有り得る症例
相手方は、PCでは無いですが,
現象から見て,電源を落としたと同じ事ですね


岡田 之仁  2005-02-16 00:47:10  No: 119660

横から失礼します・・・

ネットワーク接続で正常に切断した場合、バイナリレベルでは、FINコマンド
がネットワークに流れます。ので、セッションをクローズすることができる
と判断します。ですが、不慮の電源OFFや、ハブの故障、もしくはLANケー
ブルの抜線・破断等で、FINを送りたくても受信できない場合があります。

私は送信時にエラーとなった場合、そのエラー内容を確認し一度ネットワーク
へのシャットダウン・クローズを行い、再度、コネクションを張りなおすよう
にしています。ただ、LANケーブルの破断やハブの故障の場合、シャットダウ
ンすら行なえずエラーとなる場合がありますので、その場合は、強制クローズ
しかありません。

尚、OSが、Win2000/XP の場合、自マシンのネットワークがリンクアップして
いない場合、もう何もできません。リンクダウンした瞬間、即強制クローズ
しないことには、おかしなことになったりしました。

あと自分のマシンのネットワークケーブルが、リンクアップしているかにつ
いては、WMI(ADSI)で、確認することが可能です。確か同じような質問が、
過去にあったので、そこで書いています・・・

過去ログの検索をしてみて下さい。

以上。


  2005-02-16 01:34:37  No: 119661

PCじゃない・・・。

じゃあ、前の岡田さんのレス例を使用するのがベストでは・・・?
>私は送信時にエラーとなった場合、そのエラー内容を確認し一度ネットワーク
>へのシャットダウン・クローズを行い、再度、コネクションを張りなおすよう
>にしています。ただ、LANケーブルの破断やハブの故障の場合、シャットダウ
>ンすら行なえずエラーとなる場合がありますので、その場合は、強制クローズ
>しかありません。
って部分です。

データ送信時にエラーとして取得するのが、無難じゃないでしょうか。


G  2005-02-16 18:21:17  No: 119662

影さん、ガッさん、岡田さん
有難う御座いました
岡田さんの案を参考に何とかできました
今後も、質問することがあると思いますが
その時もよろしくお願いします


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加