以决定是否Close方法?
如果已经关闭,调用close会出错
谢谢!

解决方案 »

  1.   

    try:if(Socket1.Connected)
      Socket.Close();
      

  2.   

    这个问题很好,我当时在这里郁闷了很久!Socket失效有很多种,楼上给的Connected属性得到的是“最近一次”的Socket运行状态,也就是说是一个历史信息。要真正的判出Socket可用,这是不够的。
    采用socket.Send()的方法发送一个大小为0的数据是可以判出来的,非常有用。具体请参见MSDN文档祝你好运
      

  3.   

    心跳包是用于非正常关闭连接等情况的
    我这里要求很低,主要只是为了防止多次调用close方法
    有没有简单一些的方法?
    又或,close调用失败能否抛出异常,以便捕捉到,而不致使程序崩溃?
    下列代码还是会导致程序直接崩溃掉:
            /*****************************************************
             *   安全关闭连接
            *****************************************************/
            private void myClose(Socket mySocket)
            {
                try
                {
                    mySocket.Close();
                }
                catch (Exception ex)
                {
                    textBox1.Text += ex.Message.ToString() + "\r\n";
                }
     
            }
      

  4.   

    那就 try try 好了,呵呵,什么问题都不用想了
      

  5.   

    秒大刀说的的确没错。但我现在想解决这个问题:“如何捕获 close的异常?”