Foros del Web » Programación para mayores de 30 ;) » Java »

Problema al enviar String mediante Socket

Estas en el tema de Problema al enviar String mediante Socket en el foro de Java en Foros del Web. Hola Estoy intentando enviar la siguiente cadena mediante un Socket: "GET patatinpatan HTTP1.0\r\n" Para ello, al enviar utilizo un PrintWriter y al recibir un BufferedReader. ...
  #1 (permalink)  
Antiguo 08/01/2005, 06:22
Avatar de javimartinez  
Fecha de Ingreso: marzo-2003
Ubicación: Leganés (Madrid)
Mensajes: 284
Antigüedad: 21 años, 8 meses
Puntos: 1
Pregunta Problema al enviar String mediante Socket

Hola

Estoy intentando enviar la siguiente cadena mediante un Socket: "GET patatinpatan HTTP1.0\r\n"

Para ello, al enviar utilizo un PrintWriter y al recibir un BufferedReader. El problema viene en que al obtener los datos del BufferedReader el "\r\n" no están y obtengo el resto del texto. Así, he probado a enviar, por ejemplo, "Hola\r\nAdios\r\n" y recibo "HolaAdios", también sin los \r\n

¿A q se puede deber la pérdida de estos caracteres? ¿Como puede solucionarse?

Gracias y un saludo
__________________
Javi Martínez

Web: Acertijolandia Blog: A Entretenerse
  #2 (permalink)  
Antiguo 08/01/2005, 14:14
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 22 años, 4 meses
Puntos: 10
Si nos pudieses colocar el codigo aqui seria muy bueno

y si lo haces, por favor, preciona el boton blanco que dice PHP arribita cuando estes escribiendo el codigo y lo pegas ahi, es mas facil leerlo luego

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #3 (permalink)  
Antiguo 09/01/2005, 04:47
Avatar de javimartinez  
Fecha de Ingreso: marzo-2003
Ubicación: Leganés (Madrid)
Mensajes: 284
Antigüedad: 21 años, 8 meses
Puntos: 1
Gracias por responder goncafa, ahí coloco la parte del código q da problemas:

PARTE DONDE SE ENVIA LA CADENA

Código PHP:
    //Enviamos la petición
    
salidaNS.println("GET lista_articulos HTTP/1.0\r\n"); 
    
salidaNS.flush(); 
donde salidaNS es un PrintWriter que se obtiene así
salidaNS = new PrintWriter(new OutputStreamWriter socketNS.getOutputStream()));


PARTE DONDE SE RECIBE LA CADENA

Código PHP:
    private String obtenerPeticion(BufferedReader entradathrows java.io.IOException{
    
String cadena="";
    
String datosEntrada;
    
datosEntrada entrada.readLine(); 
    while (
datosEntrada.length() > 0) {
        
cadena=cadena datosEntrada;
        
datosEntrada entrada.readLine(); 
    }

    return 
cadena;
    } 
como ya comente, si tras obtenerPeticion compruebo el contenido de la cadena leida este es "GET lista_articulos HTTP/1.0", sin el \r\n q hay al final. Esto mismo tambien pasa si pusiera más texto después del \r\n, por ejemplo "hola\r\nadios" al obtener la peticion tendría "holaadios".

Gracias y un saludo
__________________
Javi Martínez

Web: Acertijolandia Blog: A Entretenerse
  #4 (permalink)  
Antiguo 09/01/2005, 22:11
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 22 años, 4 meses
Puntos: 10
Veras, lo que sucede es que eso que envias es interetado y no anexado.
me explico.

El metodo readLine() lee de linea en linea, y si encuentra un \n en vez de leerlo con el resto del string, lo interpreta como fin de linea y pasa la lectura a una linea siguiente, pues en el \n se detiene, pero esta no es incluida en el String de retorno.

Que tal si pruebas a enviarlos asi \\r\\n??

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:17.