Ver Mensaje Individual
  #5 (permalink)  
Antiguo 19/11/2007, 09:25
GreenEyed
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
Re: Enviar Bytes a través de Sockets

Cita:
Iniciado por clinisbut Ver Mensaje
Lanselot tiene razon, un caracter un byte.
Ok, pero eso no se conoce como "formato byte" .

Cita:
Iniciado por clinisbut Ver Mensaje
Lo de los sockets era para poner en contexto y porque tengo un lío que no veas con los streams y los buffers.

Pero ahora con la ayuda de un amigo he resuelto la parte I/O (he pasado de usar el objeto socket a usar el objeto socketchannel y un bytebuffer), pero aún tengo dudas de como formar la trama de datos que quiero enviar.

Por ejemplo... como puedo enviar la palabra "hola" sin que java convierta cada caracter a UNicode evitando asi que cada caracter ocupe el doble?
De momento estoy haciendo esto pero no se si es correcto:
Código:
String aux = new String("HOLA");
try
{
	this.start = aux.getBytes("UTF-8");
}
catch( Exception e){}
System.out.println( "Numero de bytes : " + this.start.length );
Esto me retorna 4, que si entiendo bien significa que obtengo lo que deseo, un caracter un byte... no?
Si y no. UTF-8 no codifica cada caracter en un solo byte, de la misma forma que tampoco los codifica en 2. Si sólo envías caracteres ASCII, sólo usaras un byte por caracter, si envías caracteres que no estén en la tabla ASCII, se enviarán más de un byte por caracter. No se puede enviar caracteres que no sean ASCII usando sólo un byte.

Cita:
Iniciado por clinisbut Ver Mensaje
PD: Por otra parte he leido que la JVM trata los bytes como 32bits y no como 8bit... pensando que luego debo leer estas tramas desde otro programa (no escrito en java) puede darme algun problema el uso de este tipo de dato??
¿Donde lo has leido? Más que nada por que no tiene sentido . Para conectar dos ordenadores con lenguajes operativos diferentes y usando lenguajes de programacion diferentes, usar directamente sockets es bastante complejo, por las diferencias a nivel interno de los lenguajes. Tamaño de un caracter, codificacion, posición del bit más significativo... casi nada.

Por eso es por lo que se suelen usar otras soluciones como CORBA o Web Services para hacerlo.

S!