シナリオ:
A)永続的な接続
b)は個別
C各クライアント間通信を管理する)例外/エラー
2つの異なるポートでリスニングするJavaソケットサーバーの2つのインスタンスを実行するにはどうすればよいですか。
を伝播からシステムを保護私が使用してサーバソケットリスナーの2つのインスタンスを作成しようとしました次のコード:
SimpleSocketServers.java
public class SimpleSocketServers {
public static void main(String[] args) throws Exception {
int port1 = 9876;
SimpleSocketServer server1 = new SimpleSocketServer(port1);
server1.startAndRunServer();
System.out.println("Servers : server1 Listening on port: " + port1);
int port2 = 9875;
SimpleSocketServer server2 = new SimpleSocketServer(port2);
server2.startAndRunServer();
System.out.println("Servers : server2 Listening on port: " + port2);
}
}
と
SimpleSocketServer.java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class SimpleSocketServer {
private ServerSocket serverSocket;
private int port;
public SimpleSocketServer(int port) {
this.port = port;
}
public void startAndRunServer() {
try {
System.out.println("Starting Server at port " + port + " ...");
serverSocket = new ServerSocket(port);
System.out.println("Listening for client connection ...");
Socket socket = serverSocket.accept();
RequestHandler requestHandler = new RequestHandler(socket);
requestHandler.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
class RequestHandler extends Thread {
private Socket socket;
RequestHandler(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
System.out.println("Client Request Response being processed...");
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
}
しかし、制御が最初のインスタンスのコンストラクタから復帰されていないとして、それは、唯一のインスタンスを作成します。制御を取り戻し、両方のサーバーソケットリスナを同時に実行する可能性はありますか? (ps:それが間違っている、または自明であれば私を許しなさい!)
両方のポートで同じコードを実行しているときに、クライアントまたは通信の問題を特定することはできません。有能なプログラマーがこの答えをコードに変換できると私は期待しています。これは無料のコーディングサービスではありません。 – EJP
同じリスニングソケット経由で複数の接続を受け入れることができるかどうか、私は不思議に思っています。どのようにすべてのTCPサーバーが動作するのか、そしてそれが私がacceptループを述べた理由です。 – EJP