スレッドを使用してマルチポート サーバーを構築しようとしています。ClientManager クラスと Client クラスもあります。必要なのは、ユーザーがポートの範囲を入力することです...たとえば、ポート8000〜8010です。サーバーは、これらすべてのポートで接続をリッスンする必要があります。その後、ClientManager はポートの範囲を取得し、ポートごとに Client インスタンスを作成します。次にクライアントは、0 ~ 1 秒のランダムな間隔でサーバーにメッセージを送信します。クライアントから 100 件のメッセージが送信されると、クライアントは切断されます。サーバーは、受信したメッセージの数を 5 秒ごとに出力する必要があります。
これまでのところ、ポート範囲のユーザー入力を取得し、Runtime.exec() パラメーターを介して ClientManager に送信することができました。Server と ClientManager の現在のコードは次のとおりです。
import java.io.*;
public class Server{
public static void main(String[] args){
try{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader userInputReader = new BufferedReader(isr);
String lowPortRange = null;
String highPortRange = null;
System.out.println("Enter low end of port range:");
if((lowPortRange = userInputReader.readLine())!=null){
System.out.println("Low Range: " + lowPortRange);
}
System.out.println("Enter high end of port range:");
if((highPortRange = userInputReader.readLine()) != null){
System.out.println("High Range: " + highPortRange);
}
int lowPort = Integer.parseInt(lowPortRange);
int highPort = Integer.parseInt(highPortRange);
int totalPorts = highPort - lowPort+1;
System.out.println("Total ports: " + totalPorts);
System.out.println("...Port numbers...");
for(int port = lowPort; port<=highPort; port++){
System.out.println(port);
}
System.out.println("Done!");
System.out.println();
Process p = Runtime.getRuntime().exec("java ClientManager " + lowPort + " " + highPort);
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
}catch(IOException e){
System.out.println("IOException!");
e.printStackTrace();
}
}
}
import java.io.*;
public class ClientManager{
private int lowPort;
private int numPorts;
public static void main(String[] args){
System.out.println("ClientManager Started.");
int firstPort = Integer.parseInt(args[0]);
int lastPort = Integer.parseInt(args[1]);
System.out.println("First Port: " + firstPort);
System.out.println("Last Port: " + lastPort);
}
}
私の質問は基本的にこれです: 誰かが理論的に、私がここからどこへ行くべきかを説明できますか?