これは大学向けのプロジェクトなので、解決策は投稿しませんが、良い方向性を示します。
最も基本的な方法 (大学のプロジェクトにとって、そしてすべての問題を理解するためには良いことかもしれません...) は、サーバーがサーバーに接続するための要求を 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
}
私はあなたが正しいことを願っており、これが役に立ちます...