Gostaria que vocês me dessem uma luz em relação a Socket..
Seguinte, estou tentando enviar um arquivo de um Cliente para um de dois ServidoresEscravos mas para isso tem um ServidorCentral no meio que por exemplo, verifica para qual escravo ele repassa o arquivo e o escravo salva (no caso, verifico quantos arquivos tem a pasta e faco um mod2)
ex: Cliente -> Servidor -> Escravo1/Escravo2
Enviar o arquivo do cliente para o servidor ate que estou conseguindo o problema chega quando eu tento enviar do servidor para o escravo
No Servidor:
public void run() {
try {
diretorio = "E:\\Teste Socket";
File dir = new File(diretorio);
File fList[] = dir.listFiles();
int total = fList.length;
File file = (File) input.readObject();
System.out.println("Arquivo" + file);
Escravos(total,file);
socket.close();
} catch (IOException ex) {
Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
}
}
public Socket Escravos(int valor, File file){
Socket escravo = null;
System.out.println("Numero par");
try {
if(valor %2 == 0){
escravo = new Socket("localhost", 1235);
System.out.println("Enviado para o escravo 1");
}
else {
System.out.println("Numero impar");
escravo = new Socket("localhost", 1236);
System.out.println("Enviado para o escravo 2");
}
ObjectOutputStream saida = new ObjectOutputStream(escravo.getOutputStream());
saida.writeObject(file);
escravo.close();
} catch (UnknownHostException ex) {
Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
}
return escravo;
}
No escravo:
public class Escravo1 {
private ServerSocket server;
private Socket socket;
private ObjectInputStream input;
public static void main(String[] args) throws IOException{
Escravo1 slave = new Escravo1();
slave.server = new ServerSocket(1235);
slave.socket = slave.server.accept();
slave.input = new ObjectInputStream(slave.socket.getInputStream());
try {
File file = (File) slave.input.readObject();
File novoFile = new File("E:\\Teste Socket\\"+file.getName());
Path path = novoFile.toPath();
Files.copy(new FileInputStream(file), path, StandardCopyOption.REPLACE_EXISTING);
System.out.println("Nome do arquivo" +file.getName());
} catch (ClassNotFoundException ex) {
Logger.getLogger(Escravo1.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Dá erro quando eu tento instanciar um novo socket no metodo escravos. Alguem saberia o por que e teria alguma sugestão?