quando eu tento rodar o client eu coloco o primeiro input e dou enter depois quando eu coloco o segundo input e dou enter ele fecha e nem envia a request pro server `import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import java.net.Socket; import java.util.Scanner;
public class ClienteTarefas { public static void main(String[] args) throws Exception { Socket socket = new Socket("localhost", 12345);
System.out.println("Conexao estabelecida");
Thread threadEnviaComando = new Thread(new Runnable() {
@Override
public void run() {
try {
PrintStream saida = new PrintStream(socket.getOutputStream());
Scanner teclado = new Scanner(System.in);
while (teclado.hasNextLine()) {
String linha = teclado.nextLine();
// System.out.print(linha.trim()); if (linha.trim().equals("")) { System.out.println("linha " + linha); System.out.println(teclado.nextLine()); break; } saida.println(linha); } System.out.println("sai"); saida.close(); teclado.close(); } catch (Exception e) { throw new RuntimeException(e); }
}
});
Thread threadRecebeResposta = new Thread(new Runnable() {
@Override
public void run() {
try {
System.out.println("recebendo dados do servidor");
Scanner respostaServidor = new Scanner(socket.getInputStream());
while (respostaServidor.hasNextLine()) {
String linha = respostaServidor.nextLine();
System.out.println(linha);
}
respostaServidor.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
});
threadRecebeResposta.start();
threadEnviaComando.start();
threadEnviaComando.join();
socket.close();
}
} `
import java.net.Socket;
import java.util.Scanner;
public class DistribuirTarefas implements Runnable{
private Socket socket;
public DistribuirTarefas(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try{
System.out.println("Distribuindo Tarefas para : " + socket);
Scanner entradacliente = new Scanner(socket.getInputStream());
while(entradacliente.hasNextLine()){
String comando = entradacliente.nextLine();
System.out.println("estou imprimindo o comando : " + comando);
}
entradacliente.close();
} catch (Exception e){
e.printStackTrace();
}
}
}
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ServidorTarefas {
public static void main(String[] args) throws Exception {
System.out.println("-------Rodando Servidor---------");
ServerSocket servidor = new ServerSocket(12345);
ExecutorService threadPool = Executors.newCachedThreadPool();
while (true) {
Socket socket = servidor.accept();
System.out.println("Aceitando novo cliente na porta : " + socket.getPort());
DistribuirTarefas distribuirTarefas = new DistribuirTarefas(socket);
threadPool.execute(distribuirTarefas);
}
}
}