I am doing a socket program and, after my server is connected with the device, I am trying to send a message to him. But the send() function returns a number of bytes greater th
The type of HEX_bufferMessage is pointer to CHAR. You are using sizeof( HEX_bufferMessage ) that is equal to 8 in your paltform.
You did not mean sizeof(HEX_bufferMessage)
. The type of HEX_bufferMessage
is [presumably] char*
, and the size of a char*
is 8 bytes on your [64-bit] system.
Pass the number 7
instead, preferably using a constant, and get rid of that dynamic allocation if the value 7
really is fixed.
const int BUF_SIZE = 7;
char HEX_bufferMessage[BUF_SIZE];
// ...
retorno = send(sckSloMo, &HEX_bufferMessage[0], BUF_SIZE, 0);
Assuming you've got
TYPE* myPointer;
then sizeof(myPointer)
will give you the size of the pointer (i.e. 4 bytes on a 32 bit system, 8 on a 64 bit system), not the size of the array.
You want to do
const int bufferSize = 7;
HEX_bufferMessage = new CHAR[bufferSize];
...
retorno = send(sckSloMo, HEX_bufferMessage, sizeof(CHAR) * bufferSize, 0);
It seems you assume that sizeof(HEX_buffer_message)
yields the number of elements in HEX_buffer_message
. It doesn't. It produces the size of the type of HEX_buffer_message
which seems to be a 64 bit pointer yielding 8
rather than 7
. There is no way to determine the size of an array allocated with new T[n]
from the returned pointer. You'll need to use the n
passed somehow.