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>.