只有调用Close后sock.Connected 才会变成false,
如果不用通信协议(自定义协议,比如发送Close命令给对方通知对方关闭),
那就只能捕获异常SocketException,然后再判断异常代码ErrorCode 得值来确定
是否已经断开.异常代码之的意义可以查Winsock API文档

解决方案 »

  1.   

    客户端已经退出连接,在服务器端如何知道呢?比如我开一个线程监测连接的状态,但是好像如同你说的,如果自己没有调用close,判断的connected始终是true。那么在服务器端用什么手段能够实时地知道客户端断开连接?
      

  2.   

    SqlCeConnection.State 属性查看当前状态!!
      

  3.   

    手工断开吧。还有用 上 using 语句试试
      

  4.   

    我现在就是专门开一个线程来监测连接的状态,我想知道具体是监测什么值才是有效判断条件。
    或者向你说的,只有发送一个消息过去,如果对方有回应才表示活的,否则就认为已经断了。其实我是想知道能否不用传输数据,因为在我的项目中传输数据都是要收费的,所以希望尽量减少数据的传输。根据TCP协议,连接断开是可以知道的,我就是不知道在C#中判断什么东西可以知道连接断开