Javaを使用してサーバーを構築しようとしています。 私の質問は、複数のユーザーが同時にいる場合の対処方法ですか?答えはマルチスレッドです。しかし、私はする方法を知らない。JavaのマルチスレッドWebサーバー
たとえば、2つのクライアントが同時に接続され、サーバー(2 *の番号を持つ)がある場合:クライアント1がサーバーに「50」、クライアント2に「10」と表示されている場合、サーバーは第1のクライアントに「100」を返し、第2のクライアントに「20」を返すと仮定する。しかし、私は自分のコードが動作しているか分からない。
サーバー側:
public class Server {
public static void main(String[] args){
ServerSocket socket;
try {
socket = new ServerSocket(4444);
Thread t = new Thread(new Accept(socket));
t.start();
} catch (IOException e) {
e.printStackTrace();
}
}
class Accept implements Runnable {
private ServerSocket socketserver;
private Socket socket;
private int nbrclient = 1;
public Accept(ServerSocket s){
socketserver = s;
}
public void run() {
try {
socket = socketserver.accept();
in = new BufferedReader (new InputStreamReader (socket.getInputStream()));
String message = in.readLine();
System.out.println(message);
out = new PrintWriter(socket.getOutputStream());
out.println("Pong");
out.flush();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
クライアント側:あなたが任意のアイデアを持っている場合は、私のコードが実行ように、2つのクライアントが動作するかどう
public class Client {
public static void main(String[] zero) {
Socket socket;
BufferedReader in;
PrintWriter out;
try {
socket = new Socket(InetAddress.getLocalHost(),4444);
out = new PrintWriter(socket.getOutputStream());
out.println("Ping");
out.flush();
in = new BufferedReader (new InputStreamReader (socket.getInputStream()));
String message = in.readLine();
System.out.println(message);
socket.close();
}catch (UnknownHostException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
}
は(どのようにマルチスレッドを実行するには、どのように検証します。 Javaおよびマルチスレッド動作するかどうか確認してください)
サーバーが待機する「メイン」ポートがあります。クライアントがサーバーに接続すると、新しいポートで新しいスレッドを開始し、新しいポートを使用するようにクライアントに指示します。 – DwB