Pessoal...
Estou com um probleminha :P
Descobri recentemente que o outputstream não implementa o método flush()..
E estou precisando forçar que o método flush() aconteça de alguma forma para que o stream de video funcione corretamente...
Quando eu rodo o programa e fecho o socket.. o video roda ate o ponto em q foi enviado...
O que eu quero é que... enquanto eu estiver enviando os dados... o video va rodando.. e por isso preciso do flush() funcionando...
Alguém tem alguma idéia de como resolver este problema?
@Override
public void run() {
try {
System.out.println("Inicio da Thread cliente");
OutputStream output = socket.getOutputStream();
//Enviando cabecalho
output.write("HTTP/1.1 200 OK\r\n".getBytes());
output.write("Server: Apache-Coyote/1.1\r\n".getBytes());
output.write("Content-Type: application/octet-stream;".getBytes());
output.write("Date: Mon, 21 Jul 2008 11:42:18 GMT\r\n".getBytes());
output.write("\r\n".getBytes());
//A partir deste ponto joga tudo no arquivo...
output.flush();
File file = new File(System.getProperty("user.dir") + File.separator + "teste.mpeg");
InputStream is = new FileInputStream(file);
System.out.println("\nENVIANDO VIDEO\n");
while(is.available() > 0){
try {
output = socket.getOutputStream();
byte[] bytes = new byte[5000];
is.read(bytes);
output.write(bytes);
output.flush();
} catch (Exception e) {
}
}
output.flush();
output.close();
System.out.println("\nVIDEO ENVIADO\n");
} catch (IOException e) {
e.printStackTrace();
}
}