サーバー側でファイルを管理する必要があるアプリケーション (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