私はFTPで作業するための簡単なJavaアプリケーションを作成しました。 WindowsとLinuxでは正常に動作しますが、Solarisでは動作しません。ここではソースコードは次のとおりです。JavaプログラムはSolaris上でftpで動作しません。
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 SE 6のu 23
アップデートである:それは同じ問題に直面している人のための任意の助けになります。私はちょっとした回避策を見つけました: 接続から利用可能なすべてのバイトを読み、それを閉じることができます。
byte[] buffer= new byte [con.getInputStream().available()];
con.getInputStream().read(buffer);
を完了されますが、あなたはそれをスローしません。よろしいです例外?たとえば、アクセスの出力を投稿できますか? ftp.isc.org/robots.txt。 – ShiDoiSi
はい、私は絶対にそれをしないと確信しています。あなたが提供したアクセスリンクの出力について。 Solarisマシンはインターネットにアクセスできないため不可能です。私のコードのサンプルファイルは私のローカルネットワークにあります。接続は:sun.net.www.protocol.ftp.FtpURLConnection:ftp:// user:pass @ host /../../ path_to_file/file.txt リモートのファイルが役に立ちます。サイズ:1290245 クローズ接続 – Alexander