У меня есть сокет сервера, и я хочу открыть его для нескольких клиентов. , но только получение 1, и если я закрываю этого клиента, им не разрешается больше не обращаться к клиенту.Только один клиент на моем сервере.
Серверный код:
public class Server {
public void startServer() {
final ExecutorService clientProcessingPool = Executors.newFixedThreadPool(10);
Runnable serverTask = new Runnable() {
@Override
public void run() {
try {
InetAddress ip;
connect cn = new connect();
ServerSocket serverSocket = new ServerSocket(9239);
Socket clientSocket;
System.out.println("Waiting for clients to connect...");
clientSocket = serverSocket.accept();
String HostName = "";
String HostIp = "";
String PC = "";
clientProcessingPool.submit(new ClientTask(clientSocket));
HostName = clientSocket.getInetAddress().getHostName();
HostIp = clientSocket.getInetAddress().getHostAddress();
System.out.println(HostName + "/" + HostIp);
PC = HostName + "/" + HostIp;
cn.insert(PC);
} catch (IOException e) {
System.err.println("Unable to process client request");
e.printStackTrace();
} catch (ClassNotFoundException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}
};
Thread serverThread = new Thread(serverTask);
serverThread.start();
}
private class ClientTask implements Runnable {
private final Socket clientSocket;
private ClientTask(Socket clientSocket) {
this.clientSocket = clientSocket;
}
@Override
public void run() {
System.out.println("Got a client !");
try {
clientSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Когда им с помощью клиента, им получать IP и имя хоста, но, если я запустить другой клиент, он не будет слушать это.
Что я делаю неправильно? Я думаю, что нет необходимости загружать мой код клиента, потому что я получаю первый, поэтому я думаю, что я делаю что-то неправильно.
Вы должны завернуть вызов 'serverSocket.accept()' в цикле while, чтобы он мог принимать несколько клиентов. –