clientSocket.Connect(IPEndPoint);现在我要判断connect之后,连接是否成功建立,是用
if (clientSocket.Connected)来判断,还是用
catch (Exception ex)来判断?

解决方案 »

  1.   

    如果本地网络没有连接上互联网使用try{} catch (Exception ex)来判断
    如果连接上互联网而且存在这个IPEndPoint服务器地址,但是没接收到服务器应答,TCP连接好象是返回连接超时异常,UDP的只能弄个计时器判断建议连接时用线程,不然网络慢的话就会卡机!
      

  2.   


    if (clientSocket.Connected)来判断
      

  3.   

    呵呵.. TCP如果三次握手不成功就出丢出连接异常,这个可以用Try Catch捕获...UDP的话,本身就是面向无连接的.所以你可以试着让连接的服务器进行回发...
      

  4.   

    如果连接上互联网而且存在这个IPEndPoint服务器地址,但是没接收到服务器应答,TCP连接好象是返回连接超时异常那你的意思就是用if (clientSocket.Connected)来判断没有意义,是吗?
      

  5.   

    老兄,你太客气了!我现在的想法是这样的:如果connect没有成功,我就去retry。所以我需要判断connect之后的结果,即成功与否。请各位多多指教
      

  6.   

    首先需要connect(), 如果无法连接则会异常,这里可以用try,catch来判断,如果connect()成功则返回一个连接了远端端点的socket,这时可以用connected属性来判断是不连接中,如果没有连接就无法操作。
    TCP是可靠连接通讯,就是说只有连接成功后才能对这个连接了的socket进行操作。如果在调用socket.connect(ipendpoint)没有异常则表示已经连上可以操作,当然你现在用connceted属性判断的话一般都为真,就是说是连上的,除非主机端开,或者网络断开,这时还是有异常的!
      

  7.   

    我从MSDN上面看了这个方法的介绍,如果抛出异常的话,都是一些不可修复的错误,比如防火墙设置、连接IP错误,这时候我的retry是没有任何意义的我的retry好象只能针对一种情况:连接超时,等待重试。而连接超时会抛出异常吗?我需要怎么判断是连接超时造成的连接失败,还请大侠赐教!
      

  8.   

    可以自己加个计时器有可以给连接的语句加个try{}catch{}