Я пытаюсь отправить массив значений пикселов 160x120 uint32_t, которые я генерирую случайным образом. Первые два байта должны иметь значения (160 и 120), а формат данных должен быть int32_t для обоих значений. Как мне каким-то образом нажать эти два значения int32_t в p [0] и p [1] массива uint32_t ?. Второй вопрос: передает ли этот код длину строки в качестве первого байта данных ?. До p [0]?.Длина строки по TCP
int main(int argc , char *argv[])
{
WSADATA wsa;
SOCKET server_socket, client_socket;
struct sockaddr_in server_addr, client_addr;
int c, iResult;
char sendbuf [DEFAULT_BUFLEN];
uint32_t* p;
int32_t* z;
int i;
// Send uint8_t data to client
p = (uint32_t*)sendbuf;
p[0] = 120; // must be an int32_t value
p[1] = 160; // must be an int32_t value
srand (time(NULL));
for (i = 3; i < 19203; i++)
{
p[i] = rand() % 4294967295; //range 0-4294967294 */
printf("%d\n", p[i]);
}
iResult = send(client_socket, sendbuf, (int32_t)strlen(sendbuf), 0);
return 0;
if (iResult == SOCKET_ERROR)
{
printf("Send failed. Error Code : %d\n", WSAGetLastError());
iResult = 1;
}
else
{
printf("Bytes Sent: %d\n", iResult);
iResult = 0;
}
// shutdown the connection since no more data will be sent
if (shutdown(client_socket, SD_SEND) == SOCKET_ERROR)
{
printf("Shutdown failed. Error Code : %d\n", WSAGetLastError());
iResult = 1;
}
closesocket(client_socket);
WSACleanup();
return iResult;
}
Нет. Он отправляет то, что находится в буфере, до указанной вами длины. – EJP