Eu fiz um código simples que envia um objeto para um cliente via socket.
public void iniciarServer(){
try {
server = new ServerSocket(porta);
System.out.println("Servidor iniciado na porta "+porta);
System.out.print("IP do servidor: "+Inet4Address.getLocalHost());
System.out.println("");
while(true){
cliente = server.accept();
System.out.println("Cliente conectado: "+cliente.getInetAddress().getHostName());
output = new ObjectOutputStream(cliente.getOutputStream());
output.flush();
output.writeObject("Essa mensagem foi enviada pelo servidor");
output.close();
cliente.close();
}
} catch (IOException ex) {
Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
}
}
Eu até consegui enviar uns arquivos com um vetor de bytes, mas surgiu uma dúvida:
Caso eu queira enviar vários arquivos, o cliente precisaria saber quando o arquivo atual acaba e quando o novo começa. Ou então, o servidor precisaria saber quando o cliente termina de gravar o arquivo. Também sei que ao mesmo tempo que o arquivo é recebido, ele precisa já ir sendo gravado para a memória ram não limitar o tamanho máximo dele. Não faço ideia de como fazer isso, alguém sabe?