Estou fazendo meu prog. p/ acesso ao chat do zaz. Esta indo tudo bem, so que
estou com problemas na recepcao da conversa das salas:

1 - Parece que estou recebendo os dados com algum atrazo (digo isso porque
quando uso um navegador qualquer e entro no chat, a 1a. coisa que vejo eh
"fulano entra na sala..." e esta msg demora um pouco no prog. Essa demora
tem a ver com a stream de recepcao (BufferedReader) ser bufferizada?

2 - Quando eu uso a funcao readLine (de BufferedReader) p/ receber a
conversa, pensava em receber a cada passagem por esta instrucao, "uma
conversa" de alguem, so que as vezes o prog. demora um pouco e quando
apresenta na tela, vem umas 2 ou 3 msg coladas juntas. Isso tem a ver tambem
com a stream de recepcao (BufferedReader) ser bufferizada?

3 - Duvida: no chat do zaz cada "fala" que eh enviada pelo servidor eh
terminada por um caractere fim de linha ("\n")? Pergunto isso porque o
BufferedReader le ate encontar um \n ou terminar o arquivo.

Se alguem quiser ajudar, esta em anexo um esqueleto do que quero. Chequem
com outro nick e em um horario que a sala esteja razoavelmente cheia (p/
receber alguma fala).

Ele esta preparado p/ conectar o servidor do zaz, entrar na sala Ribeirao
Preto(1) com o nome de "carlos" e receber as falas da sala, separados por
uma linha em branco.

Peco ajuda pois esta muito estranho a recepcao dos dados.

Ah, se alguem achar alguma forma de melhorar o que fiz, agradeco!

[]s

Valeu!

Carlos E O Chierici
[EMAIL PROTECTED]

//--------------------------------------------------------------------------
--------

import java.net.*;
import java.io.*;
import java.util.*;

class teste4
{
   teste4()
   {
      try
      {
         // url, script e porta
         String strURL = "chat.zaz.com.br";
         String strScript = "/@@CHATCGI@@";
         int porta = 9781;
         // url da conversacao
         String strURLConversa = null;
         // dados p/ o POST
         String strQuery = "?name=carlos&Sala=Ribeirao+Preto"
                               + "&dir=Cidades2&special=&title=Cidades2"
                               + "&entra.x=46&entra.y=15";

         // conecta ao servidor
         Socket socket = new Socket(strURL, porta);

         DataOutputStream meuDataOutput = new DataOutputStream(
               socket.getOutputStream());
         BufferedReader meuReader = new BufferedReader(
               new InputStreamReader(socket.getInputStream()));

         // faz o POST
         meuDataOutput.writeBytes("POST " + strScript + " HTTP/1.0\r\n");
         meuDataOutput.writeBytes("Content-type:
application/x-www-form-urlencoded\r\n");
         meuDataOutput.writeBytes("Content-length: " + strQuery.length() +
"\r\n");
         meuDataOutput.writeBytes("\r\n");  // end of header
         meuDataOutput.flush();
         meuDataOutput.writeBytes(strQuery);

         // le o resultado
         String linha;
         boolean bLoop = true;
         while (((linha = meuReader.readLine()) != null) && (bLoop == true))
         {
            // faz uma busca no texto recebido, procurando pelas URL de
entrada
            String strRecebida = parseEntradaSala(linha);
            // checa p/ ver se contem algum valor util
            if (strRecebida != null)
            {
               strURLConversa = strRecebida;
               bLoop = false;
            }
         }

         if (strURLConversa == null) System.out.println("Possivel capacidade
da sala esgotada");

         // fecho os fluxos de dados e o socket
         socket.close();
         meuDataOutput.close();
         meuReader.close();

         // configuracao p/ recepcao do chat
         URL meuURL = new URL(strURLConversa);
         HttpURLConnection con = (HttpURLConnection)
meuURL.openConnection();
         con.setDoInput(true);

         meuReader = new BufferedReader(new
InputStreamReader(con.getInputStream()));
         if (strURLConversa != null ) System.out.println("Recebendo de: " +
strURLConversa);

         // inicializo a recepcao
         linha = new String();
/*-------> verificar este trecho:  --------*/
         while ((linha = meuReader.readLine()) != null)
         {
            System.out.println(linha + "\n");
         }

      }
      catch(Exception ex)
      {
        System.out.println(ex.toString());
      }
   }

   // faz a busca da url de conversacao
   public String parseEntradaSala(String linha)
   {
      StringTokenizer stTkParser = new StringTokenizer(linha, " <>");

      String strResult = null;
      String strTemp;
      boolean bLoop = true;

      while(stTkParser.hasMoreTokens() && bLoop)
      {
         strTemp = new String(stTkParser.nextToken());

         // sequencia p/ obtencao da URL
         if (strTemp.equals("FRAME"))
         {
            // extrai a URL
            strTemp = new String(stTkParser.nextToken());

            if (strTemp.startsWith("SRC=\"http://chat6."))
            {
               int index = strTemp.indexOf("\"");
               strResult = strTemp.substring(++index, (strTemp.length() -
1));
               bLoop = false;
            }
         }
      }
      return strResult;
   }

   public static void main(String args[])
   {
      teste4 t4App = new teste4();
   }
}



* Para nao receber mais e-mails da lista, acesse 
<http://www.sun.com.br:8080/guest/RemoteAvailableLists>, coloque seu e-mail, escolha a 
lista <[EMAIL PROTECTED]> e de um <submit>.

Responder a