0

クライアント/サーバー アーキテクチャを含む大学のプロジェクトを作成する必要があります。

クライアントがログインして何かを検索または保存できるサーバーが必要です。

そのようなものを実装する最良の方法は何ですか?

RMI または ServerSockets または WebServices を使用して実行できると思いますが、このプロジェクトを実装する最も簡単な方法は何ですか?

Web Sevrvices を使用すると、認証/セッション処理が面倒になる可能性があると思います。ServerSockets を使用して、カスタムのシリアル化されたオブジェクトを渡すいくつかのテストを行いましたが、良い方法ではないようです。

どんな助けでも大歓迎です

4

3 に答える 3

2

これは大学向けのプロジェクトなので、解決策は投稿しませんが、良い方向性を示します。

最も基本的な方法 (大学のプロジェクトにとって、そしてすべての問題を理解するためには良いことかもしれません...) は、サーバーがサーバーに接続するための要求を ServerSocket のメインスレッドでリッスンし、次にすべての (正しい)クライアントに接続されたソケットで新しいスレッドを開始するリクエスト(この場合は何が正しいかを何らかの方法で指定する必要があります)。このスレッドは、ある種のリストまたはサーバーのメインスレッドでホストする必要があります...

アップデート:

したがって、このサーバーがクライアントにさまざまな機能を提供する場合、それはもちろんサーバー コードのメソッドであり、新しいクライアントが接続したときに作成されるオブジェクトを指定できます (今後、これらの「ClientServerConnection」を呼び出します。そのため、「ClientServerConnection」の 1 つが Server-Object で一致するメソッドを呼び出してクライアントに応じた応答を返すことができるものは何でも要求を取得した場合...

ここにいくつかの擬似コードがあります:

サーバーで:

//request for Connection came in 
ClientServerConnection csc = new ClientServerConnection(this, "and everything you need, at least client IP for connecting the socket");
csc.run(); //running in its own thread, of cause ClientServerConnection should extend Thread
connectionList.add(csc); //a list of the connections the Server holds

ClientServerConnection で:

//A request to the use a functionality of the Server come in, in the easiest way you are sending a String, and than trying to match it here
if(recievedString=="doWhatever"){
Server server.doWhatever(); //calling the according method on the Server Object you passed by creation of the ClientServerConnection Object
//now return something to the client, according to whatever the Method did 
}else if(recievedString=="doSomethingElse"){
//same again, according to whatever the now requested method does
}else{
//the client requested something you do not provide, need some sort of handling here
}

私はあなたが正しいことを願っており、これが役に立ちます...

于 2012-08-24T09:39:46.647 に答える
0

すべてのインターフェイスを定義し、通信に使用されるプロトコルを気にする必要がないため、RMI が最も簡単なソリューションだと思います。

また、RPC (リモート プロシージャ コール) インターフェースでもある SOAP で Web サービスを使用することもできます。

しかし、Socket と ServerSocket を使用することで、サーバー/クライアント ソフトウェアをゼロから構築する方法を学ぶことができます。これは、知っておくことが非常に重要です (これは基本であるため)。

于 2012-08-24T09:38:51.963 に答える
0

「簡単」というのは主観的なもので、すでに何を経験しているかにもよります。Java 関連のテクノロジの経験がある場合は、サーブレット、JSP、JQuery などのテクノロジ スタックを選択し、GAE を使用して、言及した「面倒な」側面から物事をシンプルに保つことができます。GAE はサービスとしてのプラットフォームであるため、Google が認証やスケーリングなどを処理するため、これらのことについて心配する必要はありません。それに興味がある場合は、PHP で GAE を使用することもできます。

于 2012-08-24T09:40:12.937 に答える