Вы не понимаете, что вы можете отправить с помощью WinSock.Да send () определяется как использование буфера char *, но в действительности он просто использует буфер данных.Если send () были определены сегодня, buf будет определен как void *.Но я считаю, что void * не был частью стандарта C, когда был определен send ().
Сводка об этом - send () не имеет значения, какой тип указателя вы передаете ему, простоберет необработанные байты, на которые указывает указатель, и помещает их в пакет.Это никогда не смотрит на них.Так что нет ничего плохого в том, чтобы просто передать массив:
int sendArray(SOCKET sock, int array[], int arrayLen) {
// You need to send the array length so the receiver knows
// how long the array is
int bytesSent = send(sock, (char*)&arrayLen, sizeof(arrayLen));
if (bytesSent != SOCKET_ERROR) {
// If that worked, send the
bytesSent = send(sock, (char*)array, sizeof(array[0]) * arrayLen);
}
return bytesSent;
}
Затем вам нужно будет написать цикл при отправке, который получит длину массива, выделит массив этого размера и зациклит на recv ()в то время как он собирает массив.
Поскольку и ваш клиент, и сервер имеют одинаковую последовательность, вам не нужно выполнять дополнительную обработку, поскольку оба компьютера имеют одинаковый формат данных.Поскольку ваш вопрос помечен Windows, я полагаю, что это так.