Прочитать первый элемент массива, а затем остальной массив из файлового дескриптора с помощью read()
У меня есть функция serverMsgHandler, которая обрабатывает сообщения, приходящие с клиента. Приходит массив типа long с зашифрованными данными переменной длины. Первый элемент массива не зашифрован и представляет собой длину этого массива. Я пытаюсь прочитать из файлового дескриптора сначала длину массива, а затем остальной массив, однако сервер просто ожидает второго ввода сообщения.
char *serverMsgHandler(int fd, int *valread, int d, int n) {
long size;
read(fd, &size, sizeof(long));
long encMsg[size];
char *buffer = (char *) malloc(size);
*valread = read(fd, encMsg, sizeof(long) * size - sizeof(long));
decrypt(encMsg, size, buffer, d, n);
return buffer;
}
Источник: Stack Overflow на русском