Возникли проблемы при переносе массивов через сокет

У меня возникли проблемы при передаче массива 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 - это поток, одна запись или несколько записей не имеет значения, вы можете прочитать все это за один раз или прочитать, пока у вас не будет необходимого количества байтов, и вставьте всю программу в любую сторону и получите результат, который вы получаете.

Другие вопросы по тегам