44 / 44 / 17
Регистрация: 13.09.2012
Сообщений: 196
|
||||||
1 | ||||||
Как переслать размер файла серверу14.10.2012, 19:40. Показов 1135. Ответов 12
Метки нет (Все метки)
собственно вопрос
правильно ли я понимаю, что функция recv в случае обычных сокетов не будет возвращать управление до тех пор, пока буфер не заполнится числом байтов size? recv(socket,char*,size,flags) Размер файла я посчитал
Ну как мне его переслать серверу? Неужели нужно переслать количество байт, которое выделено под размер файла В моем случае размер файла 43345 байт Т.е. 2 байта занимает переменная равная 43345 Я сначала пересылаю размер под переменную для размера файла Добавлено через 1 час 15 минут Вообщем это главный вопрос правильно ли я понимаю, что функция recv в случае обычных сокетов не будет возвращать управление до тех пор, пока буфер не заполнится числом байтов size? recv(socket,char*,size,flags)
0
|
14.10.2012, 19:40 | |
Ответы с готовыми решениями:
12
ListView, как отобразить имя файла и размер файла? Вычислить суммарный размер файлов в килобайтах и средний размер файла Как определить размер файла? Как узнать размер файла? |
14.10.2012, 21:50 | 2 | |||||
видел этот код в списке самых корявых способов определить размер файла
правильно. так:
0
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
15.10.2012, 08:56 | 3 |
Нет. Процесс будет блокирован до тех пор, пока не придет хотя бы 1 октет, или клиент не закроет сокет, или не случиться ошибка/таймаут или сигнал (для систем где сигналы есть). size это верхняя граница: больше чем size recv() никогда не вернет, а вот меньше пожалуйста. За исключением пункта про 1 октет это справедлива и для recv(,,,MSG_WAITALL).
Добавлено через 1 минуту зы: для размера файла лучше брать off_t, а не size_t
0
|
15.10.2012, 10:17 | 4 |
kotleta, написанное g_u_e_s_t касательно recv() к твоему случаю не относится. касательно же off_t - тоже вряд ли твой случай.
Добавлено через 1 минуту чем слово "байт" не угодило?
0
|
15.10.2012, 10:35 | 6 |
нет.
может быть Вы поделитесь ссылкочкой на доку любой системы, где recv() читает не байты а биты или тетрады? по уровню вопросов ТС разве не понятно, что сказанное Вами его только запутает? Добавлено через 2 минуты что-то не припомню, чтоб recv() возвращал управление по прочтению каждого байта %)
0
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
15.10.2012, 10:43 | 7 |
т.е. врете.
Нет. конечно. Есть строгое определение для Беркли (они же сейчас posix) сокетов CHAR_BIT == 8. Если Вас так смущает слово октет, читайте байт. От этого написанное мной не измениться. Это не повод врать. Добавлено через 3 минуты Учитесь читать написанное - пришлют хотя бы 1 != каждый. Сколько есть в SO_RCVBUF столько и вернут.
0
|
15.10.2012, 11:28 | 8 |
Вам виднее.
ну и славно. вот только для чего оно? разве существуют системы где это не так? это повод засорят ТС`у моцг? т.е. Вы, видя что ТС в зачаточной стадии, намеренно усложняете простое? взаимно. я уже писал о том, что написанное Вами ТС`у не поможет, а только навредит. поэтому, написанное Вами касательно сигналов я исключил отвечая на Ваш первый пост. если еще и учесть тот момент, что вероятно(мне кажется - очевидно), вопрос ТС`а относится к штатной работе без учета обрыва соединения, то написанное Вами вообще не отвечает ни на один вопрос ТС`а и, как следствие, является тематическим флудом.
0
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
||||||
15.10.2012, 11:57 | 9 | |||||
Да, существуют (правда во сновном это free-standing). Но как Вы ниже сказали это офтопик и флуд.
Пардон, но эти Ваши препирательства и есть флуд по большей части. Касательно фантазий о каких то обрывах - прочтите наконец man recv или хотя б соответсвующий раздел MSDN где сказано, что вернуть меньше - _абсолютно_ штатная ситуация. если тяжело читать - сделайте простой тест (код до accept() включительно думаю сможете сами):
buf size=102400, recivied 1 byte(s). buf size=102400, recivied 1 byte(s). buf size=102400, recivied 1 byte(s). ... ps: у меня создается впечатление, что Вы путаете recv() и send() для которого как раз и обещают отправить столько, сколько просят.
0
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
||||||
15.10.2012, 12:45 | 13 | |||||
Бывает. Давайте тогда покажем ТС'у такой самокат:
0
|
15.10.2012, 12:45 | |
15.10.2012, 12:45 | |
Помогаю со студенческими работами здесь
13
Как узнать размер файла? Как посчитать размер файла? Как получить размер файла ? Как запросить размер файла? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |