FTPClient连接时间过长无数据传输导致连接无效异常如何处理?

问题描述

想要实现一个实时系统,while(true){中间是从ftp服务器上面下载文件}现在碰到一个问题:有时候服务器上面没有文件就不会有data传输导致时间超过设置时间后无法读取文件但是使用:ftp.isConnect() 和ftp.isAvailable()去判断都是true但是ftp.retrieveFile(remoteFilePath+lists[i].getName(), fos);的时候就报错,请问如何判断ftp已经失效?或者说怎么样才能重新连接下载?

解决方案

ftp.isRemoteVerificationEnabled()用这个方法试一下吧但是隐约记得问题不是出在这里,ftp这时仍是连着的,ftp.retrieveFile 方法在上传多个文件时就会出这个问题,可能要换个方法
解决方案二:
个人感觉还是用sun的不要用apache;以下是我用apache的的代码ftpClient_oa.enterLocalPassiveMode();ftpClient_oa.setFileType(FTPClient.BINARY_FILE_TYPE);ftpClient_oa.setBufferSize(65535);inputStream=ftpClient_oa.retrieveFileStream(new String(fileName.getBytes("gb2312"),"iso-8859-1"));不过我还来还是改成sun的 ;不知道对你有没有帮助 ;

时间: 2024-08-01 14:59:49

FTPClient连接时间过长无数据传输导致连接无效异常如何处理?的相关文章

php ftp连接时间过长的问题

问题描述 php ftp连接时间过长的问题 ftp_get($conn_id,$filepath",$name,FTP_ASCII); founction( ) ; //这个函数执行时间比较长 ftp_delete($conn_id,$name); 为什么当function()执行时间比较长时,后面的ftp_delete就会执行不了?而且后面用ftp_get返回失败? 获得的ftp连接状态返回"0",连接应该是正常的啊 把ftp_delete放在founction前面就可以执

网络编程-在无数据传输时服务器端怎样检测客户端已经断开

问题描述 在无数据传输时服务器端怎样检测客户端已经断开 windows下的一个服务器程序,在数据传输过程中如果客户端断开了,send函数发送失败即可知道后端断开了,那如果没有数据传输时怎样判断?除了发探测包还有其他好的方法吗? 解决方案 如果是客户端主动关闭,那么服务端select会返回,并告知该套接字可读,这时调用recv会返回0.一般而言,可以使用心跳机制,也可以给每个连接设置非活动状态超时值. 解决方案二: 针对您的这个问题不管您最后想出了什么好方法最后都离不开发送探测包... 解决方案三

求字符串中最长无重复字符的子串

题目:求一个字符串中最长的没有重复字符的子串. 方法一:穷举法,使用2重外循环遍历所有的区间,用2重内循环检验子串是否符合"无重复字符"这一要求.其中外层循环i.j 遍历所有的下标,m.n是内层循环,检查区间[i,j]是否符合要求.空间复杂度是O(1),时间复杂度O(N^4). //O(N^4)的时间复杂度 int max_unique_substring1(char * str) { int maxlen = 0; int begin = 0; int n = strlen(str)

android 长时间运行导致程序奔溃

问题描述 android 长时间运行导致程序奔溃 偶发性bug,不知道哪里引起的错误,程序太大没办法贴出代码,请大神帮忙看看是哪里出错了可以给个提示.没调过这方面的bug,请大神教教方法 谢谢了 06-02 13:56:25.920: A/libc(15969): Fatal signal 6 (SIGABRT) at 0x00003e61 (code=-6), thread 15969 (.clov4r.ad.nil1) 06-02 13:56:26.030: I/DEBUG(107): **

Windows8系统ISP出问题导致网页频繁异常的解决方法

  Windows8系统ISP出问题导致网页频繁异常的解决方法           解决方法如下: 1.进入win8系统按快捷键"win+R"打开运行窗口,在输入框中输入"cmd"后回车; 2.打开命令提示符窗口,输入字符串"netsh winsock reset",然后回车,可以看到提示"成功地重置winsock目录,你必须重新启动计算机才能完成重置"; 3.根据上述提示,重启电脑即可.

c++-关于vector的insert 、 erase、resize操作导致迭代器无效化

问题描述 关于vector的insert . erase.resize操作导致迭代器无效化 typedef vectorint_vec; int_vec v(2,0); int_vec::iterator iter_b = v.begin(); v.insert(v.begin(),1); cout<<*iter_b<<endl; //这种操作会导致iter_b无效,输出随机值 但是: int_vec v1(2,0); int_vec::iterator iter_b = v.be

浅谈java中异步多线程超时导致的服务异常_java

在项目中为了提高大并发量时的性能稳定性,经常会使用到线程池来做多线程异步操作,多线程有2种,一种是实现runnable接口,这种没有返回值,一种是实现Callable接口,这种有返回值. 当其中一个线程超时的时候,理论上应该不 影响其他线程的执行结果,但是在项目中出现的问题表明一个线程阻塞,其他线程返回的接口都为空.其实是个很简单的问题,但是由于第一次碰到,还是想了一些时间的.很简单,就是因为阻塞的那个线 程没有释放,并发量一大,线程池数量就满了,所以其他线程都处于等待状态. 附上一段自己写的调

样式-将多个css文组合输出,返回到客户端发送到客户端发现每个拼合文件的开头会多出红点,导致css无效

问题描述 将多个css文组合输出,返回到客户端发送到客户端发现每个拼合文件的开头会多出红点,导致css无效 ,共有3个组合文件,上图中这两个红点分别是两个文件的开头部分.请教各位是啥情况!css文件中样式都是顶格写的,开头没有特殊字符的! 解决方案 是不是有不可见字符啊. 解决方案二: css保存用的什么编码格式? utf-8? ascii? 解决方案三: 应该是字符编码问题, 原来的可能是gbk, 后面发布到网站上是utf-8

connection-Java Mail接收邮件连接超时异常

问题描述 Java Mail接收邮件连接超时异常 通过命令行telnet可以成功实现邮件的接收,但JavaMaik总是报连接超时的异常,代码如下: @Controller public class ReceiveMailController { @RequestMapping(value ="/receiveMail", method = RequestMethod.GET) public void receiveMail(HttpServletRequest request) thr