一个线程,不断的进行ftp操作,
三步:1,连接到ftp;2.ftp上传;3,释放连接。
测试了这样一种情况:当进行第二步进行上传的时候,拔掉网线。理所当然会报错,2,3都报错。但是:
当下一次执行线程的时候,第一步就会报错。连接不到。具体的错误目前没法贴出来。等了半个小时依然如此。
无论是不是有finally执行释放连接,都不行。
求教!

解决方案 »

  1.   

    估计要检查下代码,是否重建了FTP连接对象。
      

  2.   


    我觉得执行第2步的时候,你拔掉网线之后,ftp有个等待时候,有没有断开重联的这种状态?导致连接没有关闭?
      

  3.   

    回2楼,线程调用的其实是service层的业务方法,当拔掉网线出现异常的时候,线程会结束的,下次再来的时候是新的线程,所以应该不会存在ftpClient对象还是老对象的问题吧?我觉得是。回3楼,我看了下sun.net的这个类的api,没有发现提供有检查状态的方法,我也觉得貌似是连接被占用之类或者未释放的问题,但是我不确定应该怎样去检查、处理。求指教。
      

  4.   

    我在想,端口监听的问题。
    java如何判断端口监听以及释放呢?
      

  5.   

    重新执行线程进行ftp连接的时候报的错贴出来了:
    java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(Unknown Source)
    at java.io.BufferedInputStream.fill(Unknown Source)
    at java.io.BufferedInputStream.read(Unknown Source)
    at sun.net.TransferProtocolClient.readServerResponse(Unknown Source)
    at sun.net.ftp.FtpClient.readReply(Unknown Source)