我编写了一个简单的java应用程序来处理FTP。它在Windows和Linux上运行良好,但在Solaris上挂起。这是源代码:
import java.io.*;
import java.net.*;
public class ftp_try {
public static void main(String[] args) {
final String hlpurl = "ftp://<user>:<pass>@host/../../some_path/some_file";
try {
URL url = new URL(hlpurl);
final URLConnection con = url.openConnection();
final int remoteSize = con.getContentLength();
System.out.println("connection: " + con.toString());
System.out.println("remote size:" + remoteSize);
System.out.println("closing connection");
con.getInputStream().close();
System.out.println("connection closed");
System.in.read();
}
catch ( MalformedURLException exp) {
System.out.println("1");
}
catch (IOException exp) {
System.out.println(2);
}
}
}
问题是在Solaris上,我的程序在
之后挂起 System.out.println("closing connection");
。
你能帮我找出原因吗?
PS:JDK是java 6 SE u 23
更新:如果对那些遇到同样问题的人有任何帮助。我找到了一点解决方法: 从连接中读取所有可用字节,然后您可以关闭它。 像这样:
byte[] buffer= new byte [con.getInputStream().available()];
con.getInputStream().read(buffer);
答案 0 :(得分:0)
您通过在此处阅读标准输入来锁定您的程序:
System.out.println("connection closed");
System.in.read(); // <-- here
如果按任意键,程序将完成