美文网首页
C# socket网络连接判定方法 (2016-09-18 14

C# socket网络连接判定方法 (2016-09-18 14

作者: 沧海一声笑的DIY宇宙 | 来源:发表于2018-02-07 17:22 被阅读0次

Socket是带状态的网络协议,但是比较麻烦的是并不能直接用Socket.Connected来判断是否仍在连接中。比如一方异常死机或者网络链路中断,这个标志位不能立刻发生改变。

比较实用的是以下判断方式

bool IsConnected(Socket s, int wait_time)

{

    try

    {

        bool part1 = s.Poll(wait_time, SelectMode.SelectRead);

        bool part2 = (s.Available == 0);

        if (part1 && part2)

        {

          return false;

        }

        else

          return true;

    }

    catch(Exception e)

    {

      return false;

    }

 }

用Poll函数判断当前是否有数据可以读取,如果可以读取并且Available有效数据长度为0,则表示socket断开。我实验了下确实有效。但是这个方式比较奇葩,不知道微软的人怎么设计成这样的接口。

相关文章

网友评论

      本文标题:C# socket网络连接判定方法 (2016-09-18 14

      本文链接:https://www.haomeiwen.com/subject/qwjnzxtx.html