прототип для записи:
ssize_t write(int fd, const void *buf, size_t count);
поэтому, пока он записывает в байтах, он может принимать указатель любого типа. Передача int*
не будет проблемой вообще.
EDIT:
Однако я рекомендую вам также отправить количество целых чисел, которое вы планируете отправить первым, чтобы получатель знал, сколько читать. Примерно так (проверка ошибок для краткости опущена):
int x[10] = { ... };
int count = 10;
write(sock, &count, sizeof(count));
write(sock, x, sizeof(x));
ПРИМЕЧАНИЕ: если массив из динамической памяти (как вы malloc
его редактировали), вы не можете использовать sizeof
для него. В этом случае количество будет равно: sizeof(int) * element_count
EDIT:
Как заметил Брайан Митчелл , вам, вероятно, также следует остерегаться вопросов endian . Это имеет место при отправке любого многобайтового значения (как в подсчете, который я рекомендовал, а также для каждого элемента массива). Это делается с помощью функций: htons
/ htonl
и ntohs
/ ntohl
.