OutputStream - Flush - Stream

0 respostas
schkr4b

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();
		} 
	}
Criado 6 de agosto de 2008
Respostas 0
Participantes 1