Добро пожаловать! Войти Зарегистрироваться

Расширенный

функция send и размер фактически отправленных данных.

Написал xaxa3217 
функция send и размер фактически отправленных данных.
23 March 2007 16:04
язык - c. всем известно, что стандарт ansi не обещает, что, например, в char будет хранится ровно 8 бит, хотя можно использовать stdint.h и использовать вместо этого int8_t для локальных задач связанных с точностью выделенного места под один байт. Однако встает вопрос - сколько бит и что считает за один байт функция send, ведь ей должен передаваться указатель на char. Что собственно будет "выплеснуто" на машине, где char=9 бит например.

Re: функция send и размер фактически отправленных данных.
23 March 2007 16:04
int send(int s, const void *msg, size_t len, int flags);

Где здесь char* --- не увидел.

send за один байт считает CHAR_BIT битов, как и положено.

9-битная машина получит тот же самый байт из 8 бит, где спереди будет приписан 9. Что именно там будет --- зависит от оборудования, но, скорее всего, 0. По аналогии с текстовым режимом FTP: отправляется 7 бит, получается тоже 7, спереди приписывается 0.
Re: функция send и размер фактически отправленных данных.
23 March 2007 23:11
раз спереди, то хорошо. просто я подумал, что, наоборот, последний бит будет равен первому из второго байта отправленного байта=\ но сразу же возникает вопрос, тут с октетами все ясно и в общем-то хорошо, а если программа вызовет send с указателем на 9-ти битный байт? что примет в таком случае любая другая машина, например с 7-ю или 8-ю битами в одном байте.
>>Где здесь char* --- не увидел.
извиняйте смотрел по хидеру winsock.h smiling smiley

... или в каком она либе???

Re: функция send и размер фактически отправленных данных.
26 March 2007 17:05
Машина с не 8-битным байтом может упаковывать биты каким угодно образом. А какая разница, если все соответствует стандарту?



Лебедев Алексей
К сожалению, только зарегистрированные пользователи могут писать в этом форуме.

Авторизоваться на форуме