3

ゲームの起動時に最新バージョンのゲームを自動的にダウンロードする「パッチャー ランチャー」をゲーム用に作成しています。ただし、複数の人が同時にファイルをダウンロードしようとすると、全員のダウンロードがフリーズして停止し、他の人がダウンロードを閉じて一度に 1 人だけがダウンロードしている場合にのみ再開されます。誰でも助けることができますか?URL からファイルをダウンロードするために使用する現在のコードを次に示します。

public void saveUrl(String filename, String urlString)
        throws MalformedURLException, IOException {
    System.out.println("Downloading " + urlString);
    BufferedInputStream in = null;
    FileOutputStream fout = null;

    int currentdlsize = 0;
    int dlsize = new URL(urlString).openConnection().getContentLength();
    System.out.println("DL Size " + dlsize);

    in = new BufferedInputStream(new URL(urlString).openStream());
    fout = new FileOutputStream(filename);

    byte data[] = new byte[1024];
    int count;
    while ((count = in.read(data, 0, 1024)) != -1) {
        fout.write(data, 0, count);
        currentdlsize += count;
        System.out.println("Downloaded " + currentdlsize + "/" + dlsize);
        prog.setMaximum(dlsize);
        prog.setValue(currentdlsize);
        progstat.setText("Downloading at " + currentdlsize + "/" + dlsize);
    }

    in.close();
    fout.close();

    System.out.println("Downloaded to " + filename);
}
4

1 に答える 1

2

あなたのダウンロード コードは正常に見え、競合状態の理由は見当たらないので、ダウンロード コードを詳しく分析しなくても、このコード (クライアント側) に問題はないと言えます。問題を引き起こしているのはサーバー側である必要があります。つまり、Web サーバーまたはその間にあるプロキシまたはファイアウォールです。

さらに、おそらくJNLPを検討する必要があります。これは、アプリケーションを常に最新の状態に保ち、起動時にこれをチェックするという問題のために設計されたテクノロジです。

于 2013-06-04T14:00:25.493 に答える