none
C++ MFC ASyncSocket使用時のケーブル断線検出方法 RRS feed

  • 質問

  • AsyncSocketを使用してTCP/IP通信のプログラムを作成しているのですが、相手局の状態(ケーブルがハブか抜けている、停止している等)を接続する前に検出する方法が無いでしょうか。
    2010年3月1日 9:42

回答

  • >相手局の状態(ケーブルがハブか抜けている、停止している等)を接続する前に検出する方法が無いでしょうか。

    無理です。

    仮に接続が途中で切断された場合などでも、その原因を知るのは不可能です。

    どうしてもということなら、ソケットとは別立てで、相手局の状態監視を行うための仕組みを用意しないとダメでしょう。
    • 回答としてマーク 菊地俊介 2010年3月9日 9:36
    2010年3月1日 10:46
  • pingはAPIとして存在します。しかし、ICMP Echoはファイアーウォールで弾かれるのが最近の趨勢ですので、相手のIPが存在していない確証はとれません。それに、pingが戻ってきても、相手がTCPの特定のポートで待っているかは別問題ですし。
    相手がTCPのポートで待っているかどうかは、普通SYN(普通じゃなければ、別のパケット)を投げないとわかりません。
    それも、結局パケットが戻ってくるかの勝負なわけで、それならconnectを発行したほうがずっと話は早いということです。


    jzkey
    • 回答としてマーク 菊地俊介 2010年3月9日 9:36
    2010年3月2日 11:56

すべての返信

  • >相手局の状態(ケーブルがハブか抜けている、停止している等)を接続する前に検出する方法が無いでしょうか。

    無理です。

    仮に接続が途中で切断された場合などでも、その原因を知るのは不可能です。

    どうしてもということなら、ソケットとは別立てで、相手局の状態監視を行うための仕組みを用意しないとダメでしょう。
    • 回答としてマーク 菊地俊介 2010年3月9日 9:36
    2010年3月1日 10:46
  • やはり、無理ですか。
    Connectを実行する前に、サーバが待受け状態を検出したかったのですが。
    また、Pingコマンドのような関数でもあれば、と思い投稿しました。

    2010年3月1日 10:50
  • pingはAPIとして存在します。しかし、ICMP Echoはファイアーウォールで弾かれるのが最近の趨勢ですので、相手のIPが存在していない確証はとれません。それに、pingが戻ってきても、相手がTCPの特定のポートで待っているかは別問題ですし。
    相手がTCPのポートで待っているかどうかは、普通SYN(普通じゃなければ、別のパケット)を投げないとわかりません。
    それも、結局パケットが戻ってくるかの勝負なわけで、それならconnectを発行したほうがずっと話は早いということです。


    jzkey
    • 回答としてマーク 菊地俊介 2010年3月9日 9:36
    2010年3月2日 11:56