代码之家  ›  专栏  ›  技术社区  ›  Adamski

检测或防止Commons Net FTPClient在读取时阻塞

  •  1
  • Adamski  · 技术社区  · 15 年前

    我正在使用公共网络 FTPClient 类定期轮询ftp站点并尝试下载文件。偶尔,当尝试从站点读取时,线程会无限期地阻塞,我想知道是否有其他人遇到过这个问题,并且可以提供任何解决方法?

    我正在使用 FTP客户 retrieveFileStream(String)

    "FTP File Poll Thread" prio=10 tid=0x083b0800 nid=0x6324 runnable [0x65b5b000..0x65b5beb0]
       java.lang.Thread.State: RUNNABLE
            at java.net.SocketInputStream.socketRead0(Native Method)
            at java.net.SocketInputStream.read(SocketInputStream.java:129)
            at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
            at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
            - locked <0x5c851928> (a java.io.BufferedInputStream)
            at java.io.FilterInputStream.read(FilterInputStream.java:66)
            at java.io.PushbackInputStream.read(PushbackInputStream.java:122)
            at org.apache.commons.net.io.FromNetASCIIInputStream.__read(FromNetASCIIInputStream.java:75)
            at org.apache.commons.net.io.FromNetASCIIInputStream.read(FromNetASCIIInputStream.java:170)
            at java.io.FilterInputStream.read(FilterInputStream.java:116)
    
    2 回复  |  直到 13 年前
        1
  •  0
  •   blackanchorage    15 年前

    如果java.io被阻塞,则需要使用java.nio包。从未将ftp与java.nio一起使用过,但假定它必须工作,因为http可以与java.nio一起工作。

    当做

        2
  •  0
  •   Adamski    15 年前

    javanioftp 在Sourceforge上,但在我的情况下,它不能保证在切换客户端时的开发开销。