Ajuda no recebimento de MSG via socket

5 respostas
Wolf_X

ola , estou me comunicando com um servidor de terceiros, no entanto ,em um determinado momento da comunicação ele me manda uma mensagem sem o \r\n no final, estou enfrentando vaiors problemas por isso. eis um exemplo da mensagem

MSG 3 N 127\r\n
    MIME-Version: 1.0\r\n
    Content-Type: text/plain; charset=UTF-8\r\n
    X-MMS-IM-Format: FN=MS%20Sans%20Serif; EF=; CO=0; CS=0; PF=0\r\n
    \r\n
    Hi.

a unica coisa q sei sobre isso eh q o numero 127 representa o tamanho da mensagem, por enquanto eu estou usando o read do inputstream com um numero absurdo como tamanho do buffer para nao perder pedaços da mensagem mas apos a mensagem aparece quadrados , se tiver um metodo de eu reconhecer esses quadrados tb serve :smiley:

5 Respostas

timotta

Não entendi bem o problema, tem como colocar o código da sua classe aqui pra gente entender melhor?

Wolf_X

meu problema eh o seguinte, como eu pegarei a parte da mensagem acima queh diz " Hi." ???
pq eu nao consigo fazer isso com o readline do BufferedReader, soh consegui com o read() do inputStream , mas como nao sei direito o tamanho da mensagem ele intera com aquele monte de quadrado, q por sinal eu nao consigo separar da mensagem, alguem sabe como separar os quadrados da mensagem ou simplesmente retirar o “Hi.” do corpo da mensagem acima?

Abdon
char[] chars = new char[100];
        boolean done = false;        
        StringBuffer pass = new StringBuffer();
        InputStreamReader reader = new InputStreamReader(socket.getInputStream());
        int len = -1;
        
        while (!done) {
            if (reader.ready()) {
                len = reader.read(chars);  
                
                if (len == -1) {
                    break;
                }
                pass.append(new String(chars, 0, len));
            } 
        }

cara eu acho que isto resolve o seu problema, não depende de \r\n, depois disto, faz uns substring maluco ai e pega esta mensagem.

Wolf_X

cara,valeu mesmo, tava quebrando a cabeça aqui :frowning:
mto obrigado!!!

vo testa aqui, brigadao mesmo

Wolf_X

po mano , brigadao mesmo, segui sua ideia e funciono perfeitamente :smiley:
o codigo ficou assim

protected String entradaMsg() {
        byte[] buffer = new byte[1664];
        String lixo = "";
        try {
            int Len = entrada2.read(buffer);
            lixo = new String(buffer);
            lixo = lixo.substring(0,Len);
        } catch (IOException ex) {}
        return lixo;
    }
Criado 10 de abril de 2007
Ultima resposta 11 de abr. de 2007
Respostas 5
Participantes 3