Eh o seguinte meu caro:

1-) O metodo InputStream.available() costuma ser meio lento e retorna o 
valor atual de bytes no BUFFER e NAUM O VALOR TOTAL de bytes no Stream;
Dica - use um valor static, como 2048
2-) O metodo InputStream.read(bytes[]) tem um valor de retorno que indica 
quantos bytes foram realmente lidos. Desta forma, eu reescreveria o codigo + 
ou - assim: (supondo JDK = 1.1, jah que hah colocoes + eficientes no 1.2)

java.util.Vector v = new Vector(2,2);
int total = 0;
int i = 0;
while (i ! = -1) {
   bytes = new byte[2048];
   i = inp.read(bytes);
   if (i > 0) {
      total +=i;
      v.addElement(new Object[] {bytes,new Integer(i)});
   }
}

final byte[] imagem = new byte[total];

int pos = 0;
Object[] o;
int tam = 0;

for (final java.util.Enumeration e = v.elements();
     e.hasMoreElements(); ) {
    o = (Object[]) e.nextElement();
    tam = ((Integer)o[1]).intValue();
    System.arraycopy((byte[])o[0],0,imagem,pos,tam);
    pos += tam;
}

label.setText("Tamanho stream: " + total);
Img = Toolkit.getDefaultToolkit().createImage(imagem);



T +!!
Michael Nascimento Santos
Analista/Consultor
CPM Sistemas - www.cpm.com.br

----Original Message Follows----
From: "Cleto Henrique Andrade Silva" <[EMAIL PROTECTED]>
Reply-To: [EMAIL PROTECTED]
To: <[EMAIL PROTECTED]>
Subject: [java-list] Acessando Servlet
Date: Mon, 8 Jan 2001 09:22:15 -0200

Pessoal,

fiz um servlet que retorna uma imagem. Quando chamo este servlet de uma 
página HTML a imagem é sempre exibida corretamente. Quando o chamo de uma 
APPLET a imagem só é exibida corretamente a primeira vez. Da primeira vez o 
tamanho do InputStream é de 4768 bytes e das próximas vezes é de 2048 bytes. 
Vejam o código de minha Applet abaixo. Alguém saberia me dizer o que tenho 
que fazer para que sejam lidos todos os bytes sempre?

Obs: estou usando jswdk-1.0.1



   public void start()
   {
       URL url;
       InputStream inp;
       byte[] bytes;

       try
       {
           url = new URL("http://localhost:8080/examples/servlet/Teste");
           URLConnection uc = url.openConnection();
           uc.setDoInput(true);
           uc.setUseCaches(false);
           inp = uc.getInputStream();
           bytes = new byte[inp.available()];
           label.setText("Tamanho stream: " + inp.available());
           inp.read(bytes);
           Img = Toolkit.getDefaultToolkit().createImage(bytes);
       }
       catch (Exception e)
       {}
  }

  public void paint(Graphics g)
  {
       if (Img != null)
       {
            g.drawImage(Img, 10, 10, this);
       }
  }
_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.


------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a