Возникли проблемы при переносе массивов через сокет
У меня возникли проблемы при передаче массива INT через сокет в c. Как правильно использовать htonl()? допустим, у меня есть:
int arra[3]={6000,7000,8000};
и сокет называется new_socket
как правильно перенести его на другой конец сокета?
клиент читает его по следующему коду:
char buf[BUFLEN] = ""; // buffer for recv() calls
for (i = 0; i < nbytes; i += INTLEN) {
int file_port = ntohl(*(int *)&buf[i]);
1 ответ
int i, wp1, ret;
for (i = 0; i < 3; i++) {
wp1 = htonl(arr[i]);
ret = write(sockfd, wp1, sizeof(int));
//error check based on ret
}
это работает. TCP - это поток, одна запись или несколько записей не имеет значения, вы можете прочитать все это за один раз или прочитать, пока у вас не будет необходимого количества байтов, и вставьте всю программу в любую сторону и получите результат, который вы получаете.