Russian Qt Forum
Ноябрь 23, 2024, 08:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QTcpSocket конец данных  (Прочитано 11555 раз)
boobsik
Гость
« : Август 17, 2009, 20:20 »

как узнать, что сокет на другом конце больше ничего не собирается писать в мой?
чтобы я начал писать ему? искал сигналы типа readyRead(), но наоборот =) не нашел.. надо просто узнать, что данным пришел конец, чтобы начать их обрабатывать..
Записан
BRE
Гость
« Ответ #1 : Август 17, 2009, 20:24 »

как узнать, что сокет на другом конце больше ничего не собирается писать в мой?
чтобы я начал писать ему? искал сигналы типа readyRead(), но наоборот =) не нашел.. надо просто узнать, что данным пришел конец, чтобы начать их обрабатывать..
Вот для этого и придумывают всяческие протоколы.  Подмигивающий

Это тебе решать, как разработчику, как одна сторона будет сообщать другой о завершении передачи. Можно указывать длину передаваемых данных в начале, можно присылать какую нибудь метку в конце.... Много чего еще можно придумать.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #2 : Август 17, 2009, 20:26 »

упс.. опередили
Записан

ArchLinux x86_64 / Win10 64 bit
boobsik
Гость
« Ответ #3 : Август 17, 2009, 20:32 »

я так понимаю, что если речь идет о html или любом другом текстовом файле, то символом конца файла будет '\0' ?  Улыбающийся
Записан
BRE
Гость
« Ответ #4 : Август 17, 2009, 20:40 »

я так понимаю, что если речь идет о html или любом другом текстовом файле, то символом конца файла будет '\0' ?  Улыбающийся
Ну там все чуть посложней.  Подмигивающий
http://ru.wikipedia.org/wiki/HTTP
Записан
boobsik
Гость
« Ответ #5 : Август 17, 2009, 20:58 »

значит если в по хттп протоколу в теле передается картинка или другая фигня, то шлется Content-Length: в заголовке, а если это текстовый(*.html, *.htm, *.php, *.js и.т.д.) то конец тела обозначается символом '\0'! Правильно? =)
Записан
ритт
Гость
« Ответ #6 : Август 17, 2009, 20:58 »

я так понимаю, что если речь идет о html или любом другом текстовом файле, то символом конца файла будет '\0' ?  Улыбающийся
lol
с каких пор html - протокол? Подмигивающий
Записан
ритт
Гость
« Ответ #7 : Август 17, 2009, 20:59 »

значит если в по хттп протоколу в теле передается картинка или другая фигня, то шлется Content-Length: в заголовке, а если это текстовый(*.html, *.htm, *.php, *.js и.т.д.) то конец тела обозначается символом '\0'! Правильно? =)
неправильно. там вообще строки разделяются по crlf.
тебе ссылку зря дали? - читай.
Записан
boobsik
Гость
« Ответ #8 : Август 17, 2009, 21:01 »

lol
с каких пор html - протокол? Подмигивающий
хттп)) читать внимательней надо  Смеющийся

за ссылку спасибо, буду вкуривать))
« Последнее редактирование: Август 17, 2009, 21:04 от boobsik » Записан
BRE
Гость
« Ответ #9 : Август 17, 2009, 21:06 »

за ссылку спасибо, буду вкуривать))
Вот здесь по забористей: http://book.itep.ru/4/45/http4561.htm
 Улыбающийся
Записан
boobsik
Гость
« Ответ #10 : Август 17, 2009, 21:10 »

за ссылку спасибо, буду вкуривать))
Вот здесь по забористей: http://book.itep.ru/4/45/http4561.htm
 Улыбающийся
кстати ценный ресурс, жаль по irc ничего)
Записан
BlackTass
Гость
« Ответ #11 : Август 18, 2009, 09:33 »

Если протокол уже готовый и менять его нелзья, а по какой-то причине в нем нет длины тела пакета, то можно воспользоваться эвристическим приемом:
1. Принимаем первую порцию данных
2. Ждем n-ное время
3. Если пришло то принимаем и опять на пункт 2. Если не пришло то считаем что данные закончились.

Число n подбирается исходя из ожидаемой ширины канала (для обычного русского интернета хватает числа 1,5 секунды)
Записан
boobsik
Гость
« Ответ #12 : Август 18, 2009, 09:36 »

в http 1.1 видимо "эвристический прием" не подойдет)) там за одними данными сразу могут идти другие)
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #13 : Август 18, 2009, 11:14 »

Я с ходу не могу себе представить кто и в каких случаях будет применять т.н. "эвристический прием". Ведь его надежность 0.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
BlackTass
Гость
« Ответ #14 : Август 18, 2009, 18:35 »

Я с ходу не могу себе представить кто и в каких случаях будет применять т.н. "эвристический прием". Ведь его надежность 0.
Диалоговый протокол. Самое оно. Хотя лучше чем размер пакета не придумано конечно ничего.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.063 секунд. Запросов: 23.