public override void Open()
        {
            try
            {
                client.Connect(remoteEP);//注:remoteEP = new IPEndPoint(ip, port);
            }
            catch (Exception e)
            { }
        }
以上代码.当TCP服务器没启动监听时,会报错,但是我捕获掉了,为什么还会弹出"不允许对非连接的套接字执行此操作".要用到两个catch来捕么,可是捕获类型是什么.?

解决方案 »

  1.   

    用  TRY CATCH FINALLY 可以解决
      

  2.   


    这样吗?
            public override void Open()
            {
                try
                {
                    client.Connect(remoteEP);
                }
                catch 
                { }
                finally
                { }
            }
    不行哦,需要写捕获类型么,
      

  3.   

    我记得 好像 有2种 异常吧
    一种是SOCKET异常
    还有一种是参数异常?记不太清楚了
      

  4.   

    对,有两种异常.一种是"由于目标机器积极拒绝,无法连接。 127.0.0.1:1260"
    一种是"不允许对非连接的套接字执行此操作"
    是不是要用两个catch?
    还要指明捕获类型是不?
      

  5.   

    后面的异常不是在这里抛出的...当发生“TCP服务器没启动监听”异常时就你把它catch了...这时client没有连接,其后再对它进行Send或Receive等操作当然就会抛出“不允许对非连接的套接字执行此操作”的异常...在你代码的其他部分找原因...
      

  6.   

    算了,自己找出来了.InvalidOperationException
    异常一般都会在输出框里写出
    C#中经常有错误只弹出框,不给你指定错误的地方,在ctrl+d,e的组合键中,查找到此异常,勾选前的框,就可以指定此错误的地方.
      

  7.   

    vrhero 
    谢了,找出来了.是GetStream时出的错...