Я написал простое 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);