2011-01-28 12 views
1

私は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); 
+0

を完了されますが、あなたはそれをスローしません。よろしいです例外?たとえば、アクセスの出力を投稿できますか? ftp.isc.org/robots.txt。 – ShiDoiSi

+0

はい、私は絶対にそれをしないと確信しています。あなたが提供したアクセスリンクの出力について。 Solarisマシンはインターネットにアクセスできないため不可能です。私のコードのサンプルファイルは私のローカルネットワークにあります。接続は:sun.net.www.protocol.ftp.FtpURLConnection:ftp:// user:pass @ host /../../ path_to_file/file.txt リモートのファイルが役に立ちます。サイズ:1290245 クローズ接続 – Alexander

答えて

0

あなたがここに標準入力を読むことによって、あなたのプログラムをロックされています:このように

System.out.println("connection closed"); 
System.in.read(); // <-- here 

あなたがいずれかを押すと、キーのプログラムが

+0

コンソールから読み込む前にプログラムがハングします。 「接続が閉じられました」はまったく印刷されません。 – Alexander

+0

あなたはそうです! :) – tonivade

関連する問題