Boa tarde pessoal estou precisando de uma ajuda estou desenvolvendo um pequeno server em Java e preciso fazer com que ele aceite várias conexões simultâneas. No momento consigo realizar apenas uma conexão por vez segue o código da parte do cliente e da parte do server:
public class Cliente {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Socket conexaoServer = new Socket("127.0.0.1",12345);//tenta conectar-se a um ip em determinada porta
System.out.println("Conexão estabelecida!");
Scanner teclado = new Scanner(System.in);//cria uma variavel escanner para ler do teclado
PrintStream saidaCliente = new PrintStream(conexaoServer.getOutputStream());
//botei aqui
InputStream FluxoDeDadosServidor = conexaoServer.getInputStream();//pega o fluxo de dados advindo do servidor
Scanner lerDoSocketServidor = new Scanner(FluxoDeDadosServidor);
while(teclado.hasNextLine()){
saidaCliente.println(teclado.nextLine());//escreve no socket servido o fluxo de dados avindo do teclado
System.out.println(lerDoSocketServidor.nextLine());//printa no console os dados advindos do servidor
}
} catch (UnknownHostException ex) {
ex.printStackTrace();
}catch (IOException ex) {
ex.printStackTrace();
}
}
}
##############################Server###########################################
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
System.out.println("Recebendo Oferenda...");
ServerSocket servidor = new ServerSocket(12345);//cria um Sockte de servidor
Socket cliente = servidor.accept();// aceita a conexão de um cliente
System.out.println("Cliente: " + cliente.getInetAddress().getHostAddress() + " conectado");//pega o endereço Ip do cliente
InputStream fluxoDeDadosCliente =cliente.getInputStream();//pega o fluxo de dados vindos dos clientes
Scanner lerDoSocketCliente = new Scanner(fluxoDeDadosCliente);//cria uma variavel de sanner que tem como entrada os dados vindos do cliente
PrintStream saidaServidor = new PrintStream(cliente.getOutputStream());//cria uma variavel de printStream que envia um fluxo de dados para o cliente
Scanner teclado = new Scanner(System.in);//pega a entrada de dados do teclado do cliente
while(lerDoSocketCliente.hasNextLine()){//enquanto haver dados no fluxo do cliente
System.out.println(lerDoSocketCliente.nextLine());//printa fluxo do cliente
saidaServidor.println(teclado.nextLine());//escreve no cliente
}
} catch (IOException ex) {
System.out.println("Erro na criação do servidor");
}
}
}