请问客户端的Socket如何知道和服务器端的Socket是否连接呢?
现在用一个方法如下:
try
                    {
                        
                            //发送0字节数组,测试实时连接状态
                            byte[] testByte = new byte[1];
                            mClientSocket.Blocking = false;
                            mClientSocket.Send(testByte);
                    }
                    catch (SocketException ex)
                    {
                        // 10035 == WSAEWOULDBLOCK
                        if (ex.NativeErrorCode.Equals(10035))
                            return true;
                        else
                            return false;
                    }
                    finally
                    {
                        mClientSocket.Blocking = true;
                    }
可以实时监测Socket的状态,但是发现会导致有时候往服务器端发送数据,对方不能接收到。
不知道何解,在此求教。

解决方案 »

  1.   

    请问有什么其他方法来判断Socket的连接状态吗?
    感觉发送0字节不是太好
      

  2.   

    从设计的角度来说,设计者希望在write的时候产生exception继而让用户得到断开的消息
    常规的操作都是采用心跳方式,定时给服务器发送数据,一旦write失败就能获知
      

  3.   

    这个不存在好不好的问题,有些是idiom,一般我们都是发送client状态给到server,不会发送0byte