Tag: ftp

从远程服务器获取通道表文件

我正在尝试使用位于远程服务器中的ccdt文件设置ccdturl。 我尝试使用ftp设置ccdt url,但它没有用。 有谁知道在远程服务器中为ccdt文件设置url的正确方法是什么? 谢谢! 我试过了: String channelTablePath = “ftp://user@host:/path-to-ccdt-file”; Url url = new URL(channelTablePath ); connectionFactory.setCCDTURL(url); 我得到的错误是: Exception in thread “main” javax.jms.JMSException: JMSWMQ2020: Failed to connect to queue manager ‘*QQ’ with connection mode ‘Client’ and supplied CCDT URL ‘ftp://user@host:/path/ccdt.tab’, see linked exception for more information. JMS Error code: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed […]

Commons Net FTPClient与Mule无限期挂起

我遇到了Mule ESB FTP传输的问题:轮询时,运行客户端的线程将无限期挂起而不会抛出错误。 这会导致FTP轮询完全停止。 Mule使用Apache Commons Net FTPClient。 进一步研究代码,我认为这是由FTPClient的SocketTimeout没有设置引起的,有时候在从FTPClient的套接字读取行时会导致无限挂起。 当问题发生时,我们可以清楚地看到用jstack检索到的这些堆栈中的问题。 __getReply()函数似乎是问题的更直接链接。 这个在创建新的FTPClient时挂在connect()调用上: receiver.172 prio=10 tid=0x00007f23e43c8800 nid=0x2d5 runnable [0x00007f24c32f1000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:152) at java.net.SocketInputStream.read(SocketInputStream.java:122) at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283) at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325) at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177) – locked (a java.io.InputStreamReader) at java.io.InputStreamReader.read(InputStreamReader.java:184) at java.io.BufferedReader.fill(BufferedReader.java:154) at java.io.BufferedReader.readLine(BufferedReader.java:317) – locked (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(BufferedReader.java:382) at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:294) at org.apache.commons.net.ftp.FTP._connectAction_(FTP.java:364) at org.apache.commons.net.ftp.FTPClient._connectAction_(FTPClient.java:540) […]

Zip文件在上传到服务器时损坏

我的java程序将zip文件从我的系统上传到FTP服务器。 uploadfile()是一个包含上传代码的函数。 uploadfile( “192.168.0.210”, “muruganp”, “vm4snk”, “/首页/管理/ GATE521 / LN_RB_Semivalid2junk /输出/” +日期+ “_ RB1.zip”, “/文件服务器/ filesbackup / EMAC /” +日期+“_ RB1 。压缩”); public static boolean uploadfile(String server, String username, String Password, String source_file_path, String dest_dir) { FTPClient ftp = new FTPClient(); try { int reply; ftp.connect(server); ftp.login(username, Password); System.out.println(“Connected to ” + server + “.”); […]

JDK 8u161中Apache FTPS客户端中的SSL会话重用

使用Apache Commons-Net的FTPSClient连接到现代FTP / S服务器不起作用。 原因是它们需要重用SSL会话,即需要重新使用来自控制连接的SSL会话进行数据连接。 这通常可以在服务器中停用,但也就是说 不安全 并不总是一个选项(因为服务器可能不在您的控制之下) 正确的解决方案是让客户端实际重用会话。 Commons-Net存在一个漏洞 ,但看起来不会很快得到解决。 此外,还有一个由Cyber​​duck(一个FTP客户端应用程序)的作者创建的“reflection黑客”,它在他们的bugtracker中进行了描述,并且在博客文章中更深入地描述。 StackOverflow上还有一篇相关文章描述了这个解决方案。 他们使用reflection来访问JDK的SSLSessionContext的内部缓存并注入一个新条目。 这个hack工作正常,直到JDK 8u161和9.0.4(?),其中引入了对更改日志中描述的SSL的一些更改。 显然,一些实现细节已经改变,导致黑客不再工作。 据我所知,现在有以下选项: 继续使用JDK 8u152,直到有人找到解决方案/ apache-commons-net得到修补/ JDK更改被回滚(不是真正的选项,因为这会切断生产系统的安全更新) 使用不同的FTPS客户端(我能找到的唯一替代方案是专有且非常昂贵) 尝试对SSLSessionContext实现的更改进行反向工程以查找新的解决方法。 这看起来不仅仅是一项非常重要的任务 – 解决方案可能会再次成为黑客,因此可能随时再次破裂。 不要再使用FTP / S. 谁能建议如何在这里继续? 相关链接: http://mail.openjdk.java.net/pipermail/security-dev/2016-December/015254.html https://bugs.openjdk.java.net/browse/JDK-8170813 https://issues.apache.org/jira/browse/NET-426

使用ftp协议连接到密码包含“@”符号的服务器

我试图在java中使用FTP协议从服务器下载文件。 通过使用以下URL我能够连接到服务器和下载文件。 URL url = new URL(“ftp://”+user+”:”+password+”@”+host+”/”+remoteFile+”;type=i”); 但是当我的密码包含“@”(例如:soft @ 2011)符号时,它会抛出以下exception: java.net.UnknownHostException: 2010@192.168.1.100 它无法区分两个“@”符号。 我该如何避免这个问题? 我可以使用任何转义字符来避免这个问题吗?

FTP上传错误“553无法创建文件”

import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; import org.apache.commons.net.ftp.FTPFile; import java.io.*; public class FTPUpload{ public static boolean uploadfile(String server,String username,String Password,String source_file_path,String dest_dir){ FTPClient ftp=new FTPClient(); try { int reply; ftp.connect(server); ftp.login(username, Password); System.out.println(“Connected to ” + server + “.”); System.out.print(ftp.getReplyString()); reply = ftp.getReplyCode(); if(!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); System.err.println(“FTP server refused connection.”); return false; } System.out.println(“FTP server connected.”); InputStream […]

公共网ftp死锁?

我有一个进程,应该每5分钟将文件ftp到一个远程位置。 它似乎已经卡住了几个小时而且还没有发送文件。 我采取了一个线程转储来查看发生了什么,这是我的线程的状态: “SPPersister” prio=6 tid=0x03782400 nid=0x16c4 runnable [0x0468f000..0x0468fd14] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) – locked (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) – locked (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:294) at org.apache.commons.net.ftp.FTP._connectAction_(FTP.java:364) at org.apache.commons.net.ftp.FTPClient._connectAction_(FTPClient.java:540) at org.apache.commons.net.SocketClient.connect(SocketClient.java:178) at […]

FTPClient下载文件失败,retrieveFile()方法replyCode = 550

/ *我在localhost上运行一个FTP服务器。当我下载文件时使用ftpClient.retrieveFile()方法,它的replyCode是550。 我读了commons-net的API并找到550 replyCode,定义是“public static final int FILE_UNAVAILABLE 550”。但我无法从我的代码中找到问题。 谢谢你的帮助。 * / FTPClient ftpClient = new FTPClient(); FileOutputStream fos = null; try { ftpClient.connect(“192.168.1.102”,2121); ftpClient.login(“myusername”, “12345678”); ftpClient.setControlEncoding(“UTF-8”); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); String remoteFileName = “ftpserver.zip”;//this file in the rootdir fos = new FileOutputStream(“f:/down.zip”); ftpClient.setBufferSize(1024); ftpClient.enterLocalPassiveMode(); ftpClient.enterLocalActiveMode(); ftpClient.retrieveFile(remoteFileName, fos); System.out.println(“retrieveFile?”+ftpClient.getReplyCode()); fos.close(); ftpClient.logout(); } catch (IOException e) { e.printStackTrace(); } […]

收到FTP响应421。 服务器关闭连接

我正在编写一个JAVA代码,使用Apache Commons Net FTPClient遍历FTP位置并在Excel文件中获取输出。 代码正确执行大约5分钟,但然后给出IOException: org.apache.commons.net.ftp.FTPConnectionClosedException: FTP response 421 received. Server closed connection. 我正在使用commons-net-3.0.1.jar。 我做了一些研发并尝试过: setDefaultTimeout(6000); setConnectTimeout(3000); setSoTimeout(3000); enterLocalPassiveMode(); 并发送NOOP ,但仍然得到相同的错误。 我想要做的就是遍历一个目录,如果找到文件,那么在excel中找到文件名和文件更新日期,如果找到了目录,那么进入内部直到再找到文件。 请帮忙询问是否需要其他信息。 我是JAVA的新手。

如何使用Java从FTP下载文件?

使用此代码,我总是得到一个空文件。 我和它有什么关系? login始终是true 。 (ofc,这里不是真正的密码) import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import java.io.*; public class Logs { public static void main(String[] args) { FTPClient client = new FTPClient(); try { client.connect(“myac.cs-server.pro”, 121); boolean login = client.login(“a3ro”, “passWordIsSecret”); System.out.println(login); String remoteFile1 = “myac_20150304.log”; File downloadFile1 = new File(“C:\\Users\\Aero\\Desktop\\test\\myac.log”); OutputStream outputStream1 = new BufferedOutputStream(new FileOutputStream(downloadFile1)); boolean success = client.retrieveFile(remoteFile1, […]