0

ファイル共有アプリケーションについて質問が多すぎて、どこから始めればよいかわかりません。私の Java の知識は非常に限られています。

そうは言っても、ここで質問が来ます。

まず、次のようなユーザー ログイン メソッドに取り組んでいます。

import java.io.File;
import java.util.ArrayList;


public class User {

    String username;
    String IPAdresa;

    public User(String username, String IPAdresa) {

         this.username = username.toLowerCase();
         this.IPAdresa = IPAdresa;

    }

    public void fileList() {

        ArrayList<String> list = new ArrayList<String>();

        File folder = new File("C:\\userfolder");

           File[] files = folder.listFiles();

           for (int i = 0; i < files.length; i++) {

                list.add(i, files[i].toString());

           }

    }
}

ご覧のとおり、ユーザー名や IPAddress などのユーザーに関するパラメーターを含むユーザー クラスと、特定のフォルダーからファイルを一覧表示し、それらのファイル名を文字列として含む配列リストを作成する fileList メソッドがあります。

次にやらなければならないことは、クライアント/ユーザーに検索機能を提供するクラスまたはメソッドを作成することです。たとえば、ユーザーがアプリケーションにログオンするとき、ユーザーは特定のファイルを検索する必要があり、共有フォルダーのファイルのリストを他のユーザーに提供します。私のメンターを理解した方法では、Request クラスには、ユーザーのそれぞれのファイル リスト内を検索できる for each ループを含める必要があります。私はそれをやってのける方法がわからず、配列リストの操作に関して多くの問題を抱えています。

これは、おおよそのように見えるはずです:(これまでのところ、これにはある種の擬似コードを使用しています)

public class RequestForFile {

    ArrayList list = new ArrayList();
    User user = new User("Slavisha","123.23.34.45");

    public RequestForFile() {
        list.add(user);
            foreach (User user in userlist) {
              foreach (String str in User.fileList()) {
                  if (str == request)
                  ...
              }
            }

    }

}

次の質問: ユーザーはどのように Java アプリケーションにログインしますか? 私は一日中それについて考えていて、それを回避しようとしましたが、失敗しました. 私はまだ GUI/Swing を持っていません。

Client、Server、HandleClient を表す 3 つのクラスがあります。

私が言ったように、どんな貢献も大歓迎です。私は確かにもっと質問をして戻ってきます。ありがとう

4

3 に答える 3

0

1 つの質問で多くの質問をしすぎています。1 つの質問は、RequestForFile オブジェクトがどのユーザーを扱っているかをどのように認識するかに関するものです。それがログインの質問です。それを個別に提起することを提案します。

今のところ、その IP アドレスで要求しているのは Slavisha であることがわかっていると仮定しましょう。ここにはかなりの問題があります:

1)。何が求められていますか?RequestForFile() は、どのファイルが要求されているかを示すパラメータを取りません。では、RequestForFile() の責任は何ですか? 1つのリクエストを表すためにサポートされていますか? 実際にファイルを見つける責任がありますか?それを返しますか?

2)。User.fileList() メソッドは、実際には何も役に立ちません。何も返さないので、完了すると、それが把握したすべてが失われます。

3)。とにかく、すべてのユーザーが同じフォルダーを見ているようです:「C:\userfolder」は、ユーザーごとに個別のディレクトリを用意するつもりでしたか。

4)。リストを調べるのはおそらく効率的ではありません。Sets と Maps について読む必要があります。

かなり細かい再設計が必要だと思います。ユーザー クラスは、「このユーザーはそのファイルを持っていますか」などの質問に答える必要があります。REquest クラスは、特定のユーザーを識別し、ファイルを要求する必要があります。クライアントからサーバーにファイルを転送する方法がわかりません。

初期の教育課題としてクライアント/サーバー プログラミングを行うことは、かなり野心的であると言わざるを得ません。

于 2010-01-09T14:13:00.680 に答える
0

「ログイン」の意味がよくわかりません。(私が信じているように) Java アプリケーションでユーザーを識別したい場合は、次を使用します。

System.getProperty("user.name");

現在アプリケーションを実行しているユーザーのユーザー名が表示されます。

于 2010-01-09T13:02:50.543 に答える
0

GUI は、コマンドライン以外の何かをユーザーに表示するために使用されますが、Swing または AWT は、ユーザーがログインできるようにするサーバーとクライアントを接続する機能を提供しません。サーバーの実行中のインスタンス。GUI を使用すると、このプロセスがよりユーザーフレンドリーになりますが、基本的には、ソケットを使用してクライアントがサーバーに接続できるようにすること (既知の IP アドレスと接続用に設定された開いているポート) について話しているため、ユーザーの情報の一部 (名前共有ファイルのリスト)、サーバーから可能なすべての共有ファイルのリストを受け取ります。その後、クライアントはこのリストをローカルで検索できます。

これを逆に行うこともできます。サーバーはクライアントから要求を受け取り、検索を行い、結果をクライアントに送信するだけです。ワークロードの大部分をどこに置きたいかによって異なります。いずれにせよ、ソケット接続を介して文字列を送信することについて話しているのです。少なくとも、ファイル名のリストを見て、あるクライアントから別のクライアントに実際にファイルを送信するまでは。

したがって、ソケットに関するチュートリアルを参照して、異なるコンピューター上の 2 つの別個のプログラムが互いに情報を送信する方法を確認することをお勧めします。

于 2010-01-09T13:45:08.057 に答える