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

Enviar caracteres no imprimibles por un Socket en Java

Estas en el tema de Enviar caracteres no imprimibles por un Socket en Java en el foro de Java en Foros del Web. Hola otra vez! Preguntar también es contribuir porque se convierte pública la información para los demás que la puedan necesitar... Al grano: Estoy trabajando con ...
  #1 (permalink)  
Antiguo 28/06/2011, 17:28
Avatar de Ferkhis  
Fecha de Ingreso: mayo-2011
Ubicación: Medellín
Mensajes: 52
Antigüedad: 13 años
Puntos: 2
Pregunta Enviar caracteres no imprimibles por un Socket en Java

Hola otra vez!

Preguntar también es contribuir porque se convierte pública la información para los demás que la puedan necesitar...

Al grano: Estoy trabajando con sockets en Java y me he topado con un problema más... Cuando envío un mensaje por medio de un socket, veo que el mensaje no llega completo... Por ejemplo tengo caracteres no imprimibles en el mensaje como (char)0 y (char)10 ya que son encabezados para comunicarse con otro protocolo... pero en el envío cuando rastreo el paquete, veo que sólo se envían los caracteres imprimibles como los que corresponden a letras, por ejemplo (char)65 que sería la "A" y así... como puedo hacer para que mis caracteres no imprimible sno se pierdan?
Gracias!!
  #2 (permalink)  
Antiguo 29/06/2011, 00:17
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 2 meses
Puntos: 17
Respuesta: Enviar caracteres no imprimibles por un Socket en Java

hola Ferkis, yo eso lo hago enviando un byte[] en lugar de un string, mira así:

Código:
 Socket conexion = new Socket(servidor,port);
 OutputStream bufferSalida = conexion.getOutputStream();  
 DataOutputStream datos = new DataOutputStream(bufferSalida);
 ; 
      	byte[] enviar =  new byte[] {
        		(byte)(0x02),
        		(byte)(0x12),
        		(byte)(0x34),
        		(byte)(0x11)
        	};
        	bufferSalida.write(enviar);
Recuerda que si estás utilizando el métiodo writeUTF deberás cambiar en el receptor el método de recibir, puesto que con writeUTF los dos primeros bytes son la longitud total del paquete.

Utiliza algún programa como Wireshark y verás como el paquete llega tal cual quieres!

Saludos!
  #3 (permalink)  
Antiguo 29/06/2011, 08:05
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Enviar caracteres no imprimibles por un Socket en Java

"pero en el envío cuando rastreo el paquete,". ¿cómo rastreas el paquete?
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 01/07/2011, 16:42
Avatar de Ferkhis  
Fecha de Ingreso: mayo-2011
Ubicación: Medellín
Mensajes: 52
Antigüedad: 13 años
Puntos: 2
Respuesta: Enviar caracteres no imprimibles por un Socket en Java

Gracias por los aportes de ambos.

En cuanto al rastreo, imprimo la string en consola justo antes de enviarla por el socket y se ve bien, con toso los caracteres sin verse afectados. La string se deforma e sjusto al llegar al otro lado, los caracteres especiales no se ven...

En cuanto al aporte de Cucuru, creo que entiendo que queres hacer, pero como funcionaria eso, con una tabla de caracteres enorme que existen... caracteres griegos, egipcios, arabes y todo eso... a la hora de mostrar el mensaje correctamente? Gracias!
  #5 (permalink)  
Antiguo 02/07/2011, 10:21
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 2 meses
Puntos: 17
Respuesta: Enviar caracteres no imprimibles por un Socket en Java

seguro que la codificacion de los datos es la misma en el cliente y el servidor???


son codigos ascii, busca una tabla cualquiera y eso es lo que imprimiría, por ejemplo, 0x34 imprimiría un 4
  #6 (permalink)  
Antiguo 02/07/2011, 10:59
Avatar de Ferkhis  
Fecha de Ingreso: mayo-2011
Ubicación: Medellín
Mensajes: 52
Antigüedad: 13 años
Puntos: 2
De acuerdo Respuesta: Enviar caracteres no imprimibles por un Socket en Java

Cita:
Iniciado por cucuru Ver Mensaje
seguro que la codificacion de los datos es la misma en el cliente y el servidor???


son codigos ascii, busca una tabla cualquiera y eso es lo que imprimiría, por ejemplo, 0x34 imprimiría un 4
Precisamente es el servidor el que tiene una tabla inmensa de caracteres Unicode, de hecho si me pusiera a crear condiciones para que fuera aceptando uno por uno como propones, no terminaría nunca... Alguna idea de automatizar eso sin condiciones? porque en serio, esa tabla es tan grande, como la del mapa de caracteres que tiene Windows.
  #7 (permalink)  
Antiguo 02/07/2011, 15:18
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 2 meses
Puntos: 17
Respuesta: Enviar caracteres no imprimibles por un Socket en Java

simplemente dile que la codificación es ascii o bien que la codificacion es unicode en el clietne, no tienes que crear tú la codificación, simplemente decirle cual quieres

Etiquetas: caracteres, char, imprimibles, socket
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 23:11.