@rtur

Как считать данные в переменную (пусть целого беззнакового типа, размером 2 байта)?

Допустим, нужно считать данные в переменную (пусть целого беззнакового типа, размером 2 байта).
Насколько правильно делать вот так:

unsigned short int packet_size = 0; //2 байта
recv(sockfd,(char*)&packet_size,2,MSG_WAITALL); //читаем в переменную


и могут ли быть подводные камни?

Заранее спасибо.
  • Вопрос задан
  • 3100 просмотров
Решения вопроса 1
@leclecovich
Среди подводных камней может быть следующее:
1 Сокет должен быть открыт до и закрыт после
2 Вызов recv с параметром MSG_WAITALL блокирующий, т.е. если придет один только один байт, то вызывающий тред будет заблочен до прихода следующего
3 Порядок байт. Скорее всего будет LE, но мало ли...
4 Данные принимаются от любого источника. Если нужно иначе - recvfrom(...)
5 Под Windows есть ограничения на работу сокетов
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы