C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.39349 の関連記事表示

<< 0 >>
■39349  Socket通信について
□投稿者/ マ− -(2009/08/06(Thu) 10:18:31)

    分類:[.NET 全般] 

    Socket通信について、相手との接続エラー検出方法がわかりません。
    正常切断時は、Recvにて0バイトが返ってくるため、判断できます。
    また、回線切断時も同様にRecvでTry−Catchすることで、判断できました。
    しかし、相手機器の電源断時には、Recvは全く反応しませんでした。
    その他、Pollや、Send0バイトでも判断できませんでした。
    よろしくお願いします。
親記事 /過去ログ68より / 関連記事表示
削除チェック/

■39355  Re[1]: Socket通信について
□投稿者/ やじゅ -(2009/08/06(Thu) 11:47:38)
>
    No39349 (マ− さん) に返信
    > Socket通信について、相手との接続エラー検出方法がわかりません。

    >その他、Pollや、Send0バイトでも判断できませんでした。
    と書かれているので、試されているのかもしれませんが・・・

    Socketで相手側から切断を認識したい エンコードをUnicode
    https://www.microsoft.com/japan/msdn/community/gdn/ShowPost-15468.htm

    if(socket.Poll(1,SelectMode.SelectRead)) //1はCPU負荷を軽減するため
    {
     if( 0 < socket.Available )
     {
     ...
     }
     else
     {
      //***接続が切れました***
      break;
     }
    }
記事No.39349 のレス /過去ログ68より / 関連記事表示
削除チェック/

■39368  Re[2]: Socket通信について
□投稿者/ マー -(2009/08/06(Thu) 15:26:35)
    No39355 (やじゅ さん) に返信
    > ■No39349 (マ− さん) に返信
    >>Socket通信について、相手との接続エラー検出方法がわかりません。
    >
    > >その他、Pollや、Send0バイトでも判断できませんでした。
    > と書かれているので、試されているのかもしれませんが・・・
    >
    > Socketで相手側から切断を認識したい エンコードをUnicode
    > https://www.microsoft.com/japan/msdn/community/gdn/ShowPost-15468.htm
    >
    > if(socket.Poll(1,SelectMode.SelectRead)) //1はCPU負荷を軽減するため
    > {
    >  if( 0 < socket.Available )
    >  {
    >  ...
    >  }
    >  else
    >  {
    >   //***接続が切れました***
    >   break;
    >  }
    > }
    >

    上記のサンプルも試しましたが、切断信号受信時(FIN,RST)しか判断できませんでした。
記事No.39349 のレス /過去ログ68より / 関連記事表示
削除チェック/

■39353  Re[1]: Socket通信について
□投稿者/ オショウ -(2009/08/06(Thu) 11:31:49)
    No39349 (マ− さん) に返信
    > Socket通信について、相手との接続エラー検出方法がわかりません。
    > 正常切断時は、Recvにて0バイトが返ってくるため、判断できます。
    > また、回線切断時も同様にRecvでTry−Catchすることで、判断できました。
    > しかし、相手機器の電源断時には、Recvは全く反応しませんでした。
    > その他、Pollや、Send0バイトでも判断できませんでした。
    > よろしくお願いします。

      受信するだけなら無理です。

      send0バイトって何?
      データ部がゼロバイトの送信パケットを送った?
      本当にパケット飛んだのでしょうか・・・

      パケットが出てれば、TCPの場合相手が受信不能な場合、必ずエラー
      します。ので判断できます。

    ※ UDPではないですよネ?!
      UDPは相手に到達しない場合、相手から能動的に受信完了のような
      応答パケット送信しない限り、解りません。

    以上。
記事No.39349 のレス /過去ログ68より / 関連記事表示
削除チェック/

■39369  Re[2]: Socket通信について
□投稿者/ マー -(2009/08/06(Thu) 15:29:54)
    No39353 (オショウ さん) に返信
    > ■No39349 (マ− さん) に返信
    >>Socket通信について、相手との接続エラー検出方法がわかりません。
    >>正常切断時は、Recvにて0バイトが返ってくるため、判断できます。
    >>また、回線切断時も同様にRecvでTry−Catchすることで、判断できました。
    >>しかし、相手機器の電源断時には、Recvは全く反応しませんでした。
    >>その他、Pollや、Send0バイトでも判断できませんでした。
    >>よろしくお願いします。
    >
    >   受信するだけなら無理です。
    >
    >   send0バイトって何?
    >   データ部がゼロバイトの送信パケットを送った?
    >   本当にパケット飛んだのでしょうか・・・
    >
    >   パケットが出てれば、TCPの場合相手が受信不能な場合、必ずエラー
    >   します。ので判断できます。
    >
    > ※ UDPではないですよネ?!
    >   UDPは相手に到達しない場合、相手から能動的に受信完了のような
    >   応答パケット送信しない限り、解りません。
    >
    > 以上。

    send0バイトは、パケットは飛びませんが、回線切断時にエラー検出できました。
    おっしゃるとおり、パケットが出ていれば(1バイトでも送信していれば)、判断できます。

    すいません、UDPではなく、TCPです。。。書いていませんでした。

記事No.39349 のレス /過去ログ68より / 関連記事表示
削除チェック/

■39380  Re[3]: Socket通信について
□投稿者/ オショウ -(2009/08/06(Thu) 18:38:46)
    > send0バイトは、パケットは飛びませんが、回線切断時にエラー検出できました。
    > おっしゃるとおり、パケットが出ていれば(1バイトでも送信していれば)、判断できます。
    >
    > すいません、UDPではなく、TCPです。。。書いていませんでした。

      先の1対1でハブはさんで・・・と言う場合、ハブの電源オフで
      自PCのネットワークがLinkDownするので、取れてしまいますネ!

      2台ハブ中継して、遠い方の1台の電源をオフにした場合、LinkUp
      したままで通信不能になるので、sendで見れるはず・・・

      間違った情報書いてすいませんでした・・・

    ※ これで一応、解決した?のでしょうか・・・

    以上。
記事No.39349 のレス /過去ログ68より / 関連記事表示
削除チェック/

■39395  Re[4]: Socket通信について
□投稿者/ マー -(2009/08/07(Fri) 08:16:53)
    No39380 (オショウ さん) に返信
    >>send0バイトは、パケットは飛びませんが、回線切断時にエラー検出できました。
    >>おっしゃるとおり、パケットが出ていれば(1バイトでも送信していれば)、判断できます。
    >>
    >>すいません、UDPではなく、TCPです。。。書いていませんでした。
    >
    >   先の1対1でハブはさんで・・・と言う場合、ハブの電源オフで
    >   自PCのネットワークがLinkDownするので、取れてしまいますネ!
    >
    >   2台ハブ中継して、遠い方の1台の電源をオフにした場合、LinkUp
    >   したままで通信不能になるので、sendで見れるはず・・・
    >
    >   間違った情報書いてすいませんでした・・・
    >
    > ※ これで一応、解決した?のでしょうか・・・
    >
    > 以上。

    できればSendせずに検出したかったのですが、どうも手段がなさそうですね・・・
    Pingを送るか、定期的に送受信を行うか、してみます・・・
    とりあえず、解決済みにしておきます。
記事No.39349 のレス / END /過去ログ68より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -