Как отправить и принять unsigned long long c++

Рейтинг: -2Ответов: 2Опубликовано: 25.04.2015

Уже три часа пытаюсь найти решение, необходимо с помощью наименьшего байтов отправить от клиента на сервер число unsigned long long,

Делаю так

Клиент:

unsigned long long n = 18446744073709551500;
send(sock, (char *)n, 8, 0);

Сервер:

char t[7];
recv(sock, t, 8, 0);
unsigned long long n;
memcpy(&n, t, sizeof(unsigned long long));
printf("%llu\n", n);

Сервер вывел: 14757395258967641141

Пробовал уже много чего, может кто-нибудь знает, я в си не силён простите за глупый вопрос

Ответы

▲ 3Принят

Вы пропустили указатель, достаточно добавить & в код клиента:

unsigned long long n = 18446744073709551500;
send(sock, (char*)&n, sizeof(n), 0);

Код сервера:

unsigned long long n;
recv(sock, (char*)&n, sizeof(n), 0);
printf("%llu\n", n);
▲ 3

Вы принимаете 8 байт в 7-байтный буфер, как минимум проблема может быть тут