Seguramente esto sea una chorrada pero me estoy volviendo loco ya.
Es comunicacion mediante sockets.
Por lo que tengo entendido:
Big Endian = Network Order
asique hasta ahi creo que lo tengo bien.
Tengo que recibir un int enviado por java, con lo que logicamente uso ntohl, que lo convierte a unsigned pero no veo problema porque el numero nunca es negativo ni se sale del rango del long de java.
Servidor:
u_int file_size;
printf("Size of long %ldn", sizeof(u_int));
while(received == -1)
{
received = recv(*sd2, &file_size,sizeof(u_int) ,0);
}
u_int aux = ntohl(file_size);
printf("File size is: %dn",aux);
Cliente:
SocketChannel schannel = SocketChannel.open(direccion);
ByteBuffer bb = ByteBuffer.allocate(500);
---
----
------
bb.clear();
bb.order(ByteOrder.BIG_ENDIAN);
bb.putInt(fileSize);
bb.put(0, (byte)0);
bb.flip();
System.out.println(bb.toString());
numwritten = 0;
while(numwritten == 0)
{
numwritten = schannel.write(bb);
}
No se lo que le pasa al código, pero no me recibe los valores correctamente. ¿Algun iluminado?