c - Write n bytes and read n bytes: sending number of bytes to read using uint16_t -
i've been using these read , write functions (provided @alk).
problem don't know how correctly send uint16_t data_size;.
here actual code send general example buffer:
uint16_t data_size; int retry_on_interrupt = 0; char buffer[] = "hello world!"; data_size = (uint16_t) sizeof(buffer); /* sending data_size */ writen(socket, data_size, 2, retry_on_interrupt); /* sending buffer */ writen(socket, buffer, sizeof(buffer); and here actual code receive general example buffer:
/* receiving data_size */ readn(socket, &data_size, 2); /* receiving buffer */ readn(socket, buffer, data_size); but not working, think because writen requires const char *, instead i'm using uint16_t...
how should these calls be? thanks.
replace
writen(socket, data_size, 2, retry_on_interrupt); by
if (-1 == writen(socket, &data_size, sizeof data_size, 1)) { perror("writen() failed writing size"); exit(exit_failure); } and replace line
writen(socket, buffer, sizeof(buffer); by
if (-1 == writen(socket, buffer, data_size, 1)) { perror("writen() failed writing pay-load"); exit(exit_failure); } you want add error-checking reading functions well!
also want take care of possible endianness (byte-order) issue, when sending/receiving between different hardware-platforms.
Comments
Post a Comment