0

既存のスプレッドシート アプリケーション ( CleanSheets - オープン ソース)を拡張する必要がある大学のプロジェクトがあります。

今のところ、それは単純なスプレッドシート アプリケーションです。私が実装するように求められたのは、ユーザーがシートを共有できるようにするメニューオプションです (つまり、ユーザーは「シートを共有する」を選択します - それは現在のものです - そして、共有したい領域を選択します: A1:A9、例)。次に、ローカル ポートを指定すると、共有が作成されます。

その共有に接続したい他のユーザーは、接続するマシンの IP とポートを知っている必要があります。「共有シートに参加」というメニューオプションの下にその情報を入力すると、その共有領域が現在のシートに表示され、他の人がそれらのセルに入力しているものを自由に編集および表示できます.

誰もが読み取り/書き込みアクセス権を持っています - これはスレッドによって制御される必要があります (1 人のユーザーがそのシートを共有し、3 つのピアがそのシートに接続され、すべての変更を表示して独自のものを作成できるため)。複数の除外を保証する必要があります (これは、セマフォおよび/またはリエントラントロックで行うことができます)。

共有の実装は、ピア ツー ピア アーキテクチャで実装する必要があります。

ここで私の質問は次のとおりです。Java でソケットを使用して開発を開始するにはどうすればよいですか? 特に JXTA に関する Java のドキュメントを読んだことがありますが、それはおそらく私が必要としているものではありません。複雑な P2P アプリケーションは必要ありません。その共有機能だけが必要です。

私は UDP を使用する必要があると仮定しています (TCP は主にサーバークライアントであり、ここでは誰でもサーバーまたはクライアントになることができるため)、パケット制御は必要ありません。C のソケットについては既に知っています。ソケットに関連する Java ではどのクラスを使用すればよいですか?

4

1 に答える 1

1

java.io と java.net には、参照すると便利なクラスがいくつかあります。キャッチ/スローを無視したため、これは非常に単純化された例ですが、tx/rx で何ができるかを示してくれることを願っています。

write bytes はシリアライズ可能なものを取り込めるはずです。

データを送る:

// create connection
Socket cs = new Socket(<dest-hostname>, <port-num>);
DataOutputStream ds = new DataOutputStream(cs.getOutputStream() );

// send stuff
ds.writeBytes("is this thing on?");

// close socket and stream
cs.close();
cs = null;
ds = null;

Receive data:
ServerSocket listenSocket;
Socket s = listenSocket.accept();
BufferedReader receivedThing = new BufferedReader( new InputStreamReader( s.getInputStream() ) );

//assuming its plaintext
String msg = receivedThing.readLine();

// close the socker/serversocket

お役に立てれば。

于 2012-06-27T15:37:00.167 に答える