2012-03-28 32 views
0

Webサーバーから一連のファイルをダウンロードするにはjavaプログラムが必要です。各ファイルのダウンロードの間にtcp/ip接続を閉じてから再度開くことができる必要があります。JavaクローズTCP/IP接続

これを行う方法がわかりません。

+0

[あなたは何を試してみました!](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

答えて

1

しかないソケット80(HTTP)から任意の情報を検索する低レベルの方法ですが、一般的にメールを取得するために、「telnetの」などの操作を行います。取得するために呼び出しを行うことになりました

socket = new Socket(); 
socket.connect(new InetSocketAddress(host, port)); 
reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 

をページを取得し、getコマンドを送信し、コンテンツタイプを設定し、2つの '\ n'を送信します。

、より高いレベルのソリューションがあります: Send HTTP GET request with header

+0

感謝。それが私が探しているものです。速い応答を高く評価してください。 – BourneAgain

+0

ちょうどフォローアップの質問。私はソケットを閉じて、私は再びそれを使用しようとします(socket.connect(新しいInetSocketAddress(host、80));)私はjava.net.SocketExceptionを受け取ります。私はそれを再び開くように見えない。だから、ソケットソケット=新しいソケット()、ソケットソケット2 =新しいソケット();などと宣言しています。これは正しい方法ですか、何とか閉じたソケットを再び開くことはできますか? – BourneAgain

+0

私はこのようにコード化して以来、しばらくしてきましたが、私が覚えていることから、このコードの意図は、ステートレスな呼び出し(つまり、データを取得し、ストリームとソケットを閉じる)とプログラムを終了することでした放置)。いくつかのhttp呼び出しを行うには、1.ソケットオブジェクトを作成し、2. InetSocketAddressオブジェクトを作成します。その後、各呼び出しに対して、InetSocketAddressのフィールドを変更し(いくつかのsetメソッドを呼び出して)、新しいリーダーとライターを作成し、ページを取得してから、closeステートメントを実行します。 – SunKing2

0

あなたはIPとポートあなたはDataOutPutStreamて、その後、FileInputStreamを使用してバイト配列にファイルを読み込み、そのバイト配列を送信するためにそれを送りたい行われたときに、そしてちょうどフラッシュDataOutputStreamのと近いためSocketを作成することができますSocketを呼び出し、次のファイルを再度送信する関数を呼び出します。ここで

0

は、ロジックを使用: あなたがしようとしたものを投稿してください。

do{ 
     connection.open; 
     while(!eof){ 
     fetchfiles(); 
     } 
    connection.close; 
    }while(no of files yet to download); 
関連する問題