0

サーバー側でファイルを管理する必要があるアプリケーション (SWT) があります。管理とは、ファイルへのコンテンツの書き込み、読み取り/書き込みロックメカニズムの適用TextArea. アプリケーション(実際にはEclipseベースのプラグイン)が複数のユーザーを受け入れるため、これを実現するにはマルチスレッドサーバーを作成する必要があります。私はこのクライアントサーバーのこととソケットプログラミングに不慣れで、いくつかのチュートリアルを読んだことがありますが、まだ最適な解決策を見つけていません。コードは必要ありません(インターネットにはたくさんあります)。むしろ、それを行う方法または手順が必要です。ありがとう。

また、実際に正常に動作するサーバー コードをいくつか見つけました。ただし、目的の結果が表示されません。

私がこのファイルでやりたいことは、作者の名前を維持することです。SVN がサーバー側で行うように、リビジョン番号と関連する destils。

サーバー プログラム:

public void onServer() throws Exception {
        String sentByClient;
        String line1 = null;
        ServerSocket socket = new ServerSocket(6789);
        while(true) {

    System.out.println("Listening...");
        Socket connectionSocket = socket.accept();
        BufferedReader inFromClient =
        new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
        DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
        sentByClient = inFromClient.readLine();

        System.out.println("Received: " + sentByClient);

        File file=new File("HistoryFile.txt");//------------------server file
        BufferedWriter writ=new BufferedWriter(new FileWriter(file));
        writ.write(sentByClient);
        writ.close();
        BufferedReader read=new BufferedReader(new FileReader(file));

        while((line1=read.readLine())!=null) {
            System.out.println(line1);

        }
        outToClient.writeBytes(line1);

                    }

    }

クライアントコード:

public void onClient(String param) throws Exception {
        Socket clientSocket = new Socket("localhost", 6789);
          DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
          BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
          //sentence = inFromUser.readLine();
          sentence=param; // Here i'm sending the author name, revision details, etc from svn to my server 
          outToServer.writeBytes(sentence);
          newSentence = inFromServer.readLine();
          System.out.println("FROM SERVER: " + newSentence);
          historyArea.append(newSentence);
    }

私が実際に必要としているのは、サーバー上でファイルを維持し、ファイルの内容を textArea(historyArea) に表示することです。履歴データを SVN からファイルに送信しています。

望ましい出力:

Revision Number: 1
Author: a
Time:xxxx
Changed Path:xxxx 
-------------------
Revision Number: 2
Author: a
Time:xxxx
Changed Path:xxxx
------------------
Revision Number: 3
Author: a
Time:xxxx
Changed Path:xxxx

私が得ている出力は、最初のリビジョンです:

Revision Number: 1
    Author: a
    Time:xxxx
    Changed Path:xxxx 
4

1 に答える 1