![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Rastorev |
![]()
Сообщение
#11
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 27.2.2009 Пользователь №: 579 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Вы знаете, что произойдёт, если в tofile попадёт -1 ? Указывающая на то, что при получении произошла ошибка. Вы все правильно описали что должно произойти. Вся загвостка оказалась куда более простая чем я думал!!С принимающей стороны надо было ожидать пока все пришедшие bytesavalible() данные будут готовы для чтения |
|
|
DICKobraz |
![]()
Сообщение
#12
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 12.8.2009 Пользователь №: 997 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Добрый день! У меня похожая проблема с ограничением в размере,можно узнать как от нее избавится?Что-то добавить в цикл while?
|
|
|
kuzulis |
![]()
Сообщение
#13
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Добрый день! У меня похожая проблема с ограничением в размере,можно узнать как от нее избавится?Что-то добавить в цикл while? Какое такое ограничение? посмотрите исходники examples\network\loopback\ |
|
|
DICKobraz |
![]()
Сообщение
#14
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 12.8.2009 Пользователь №: 997 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Вобщем, вот часть клиента:
Любой переданый от сервера фаил обрезается до 64k.Как я понимаю проблема такая же как была описана выше,вот и хотелось бы узнать каким образом ожидать пока все пришедшие bytesavalible() данные будут готовы для чтения?
Причина редактирования: Используй тэг code
|
|
|
igor_bogomolov |
![]()
Сообщение
#15
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
Цитата (int)sizeof(quint16) Все правильною Ты сам себя ограничил 64к максимальное значение blockSize = 0xffff, т.е. 65535 или 64k |
|
|
Litkevich Yuriy |
![]()
Сообщение
#16
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
igor_bogomolov |
![]()
Сообщение
#17
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
будет равно 2 (байта), а не 64к А я такого и не писал ![]() Цитата максимальное значение blockSize = Максимальное значение которое можно записать в два байта 65535 или 65535 / 1024 = 64 к Вот оно и ограничение. Тогда уж
|
|
|
kuzulis |
![]()
Сообщение
#18
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Тогда уж int blockSize = 0; .... .... if (tcpSocket->bytesAvailable() < sizeof(int)) return; in >> blockSize; а тут вы ограничиваете 4-мя байтами, т.к. sizeof(int) = 4 ![]() |
|
|
igor_bogomolov |
![]()
Сообщение
#19
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
kuzulis,
blockSize у нас определяет, какое количество бат мы должны получить. // здесь мы проверяем, пришло ли достаточное количество данных, чтобы считать значение blockSize
// иначе считываем, в данном случае 4 байта, т.е. int
Максимальное значение инта 4294967295. теперь мы ограничены этим количеством байт. Ранее были ограничены 65536 байтами или 64 килобайтами |
|
|
DICKobraz |
![]()
Сообщение
#20
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 12.8.2009 Пользователь №: 997 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Цитата (int)sizeof(quint16) Все правильною Ты сам себя ограничил 64к максимальное значение blockSize = 0xffff, т.е. 65535 или 64k Спасибо большое!Просто исправил на unsigned int все как надо работает!Я в начале за основу взял пример сервера передающего текстовые сообщения поэтому так и оставался 16 битовый инт. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 18.2.2025, 2:18 |