Russian Qt Forum
Ноябрь 15, 2024, 12:10
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Работа с сетью
>
QTcpSocket конец данных
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QTcpSocket конец данных (Прочитано 11535 раз)
boobsik
Гость
QTcpSocket конец данных
«
:
Август 17, 2009, 20:20 »
как узнать, что сокет на другом конце больше ничего не собирается писать в мой?
чтобы я начал писать ему? искал сигналы типа readyRead(), но наоборот =) не нашел.. надо просто узнать, что данным пришел конец, чтобы начать их обрабатывать..
Записан
BRE
Гость
Re: QTcpSocket конец данных
«
Ответ #1 :
Август 17, 2009, 20:24 »
Цитата: boobsik от Август 17, 2009, 20:20
как узнать, что сокет на другом конце больше ничего не собирается писать в мой?
чтобы я начал писать ему? искал сигналы типа readyRead(), но наоборот =) не нашел.. надо просто узнать, что данным пришел конец, чтобы начать их обрабатывать..
Вот для этого и придумывают всяческие протоколы.
Это тебе решать, как разработчику, как одна сторона будет сообщать другой о завершении передачи. Можно указывать длину передаваемых данных в начале, можно присылать какую нибудь метку в конце.... Много чего еще можно придумать.
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: QTcpSocket конец данных
«
Ответ #2 :
Август 17, 2009, 20:26 »
упс.. опередили
Записан
ArchLinux x86_64 / Win10 64 bit
boobsik
Гость
Re: QTcpSocket конец данных
«
Ответ #3 :
Август 17, 2009, 20:32 »
я так понимаю, что если речь идет о html или любом другом текстовом файле, то символом конца файла будет '\0' ?
Записан
BRE
Гость
Re: QTcpSocket конец данных
«
Ответ #4 :
Август 17, 2009, 20:40 »
Цитата: boobsik от Август 17, 2009, 20:32
я так понимаю, что если речь идет о html или любом другом текстовом файле, то символом конца файла будет '\0' ?
Ну там все чуть посложней.
http://ru.wikipedia.org/wiki/HTTP
Записан
boobsik
Гость
Re: QTcpSocket конец данных
«
Ответ #5 :
Август 17, 2009, 20:58 »
значит если в по хттп протоколу в теле передается картинка или другая фигня, то шлется Content-Length: в заголовке, а если это текстовый(*.html, *.htm, *.php, *.js и.т.д.) то конец тела обозначается символом '\0'! Правильно? =)
Записан
ритт
Гость
Re: QTcpSocket конец данных
«
Ответ #6 :
Август 17, 2009, 20:58 »
Цитата: boobsik от Август 17, 2009, 20:32
я так понимаю, что если речь идет о html или любом другом текстовом файле, то символом конца файла будет '\0' ?
lol
с каких пор html - протокол?
Записан
ритт
Гость
Re: QTcpSocket конец данных
«
Ответ #7 :
Август 17, 2009, 20:59 »
Цитата: boobsik от Август 17, 2009, 20:58
значит если в по хттп протоколу в теле передается картинка или другая фигня, то шлется Content-Length: в заголовке, а если это текстовый(*.html, *.htm, *.php, *.js и.т.д.) то конец тела обозначается символом '\0'! Правильно? =)
неправильно. там вообще строки разделяются по crlf.
тебе ссылку зря дали? - читай.
Записан
boobsik
Гость
Re: QTcpSocket конец данных
«
Ответ #8 :
Август 17, 2009, 21:01 »
Цитата: Константин от Август 17, 2009, 20:58
lol
с каких пор html - протокол?
хттп)) читать внимательней надо
за ссылку спасибо, буду вкуривать))
«
Последнее редактирование: Август 17, 2009, 21:04 от boobsik
»
Записан
BRE
Гость
Re: QTcpSocket конец данных
«
Ответ #9 :
Август 17, 2009, 21:06 »
Цитата: boobsik от Август 17, 2009, 21:01
за ссылку спасибо, буду вкуривать))
Вот здесь по забористей:
http://book.itep.ru/4/45/http4561.htm
Записан
boobsik
Гость
Re: QTcpSocket конец данных
«
Ответ #10 :
Август 17, 2009, 21:10 »
Цитата: BRE от Август 17, 2009, 21:06
Цитата: boobsik от Август 17, 2009, 21:01
за ссылку спасибо, буду вкуривать))
Вот здесь по забористей:
http://book.itep.ru/4/45/http4561.htm
кстати ценный ресурс, жаль по irc ничего)
Записан
BlackTass
Гость
Re: QTcpSocket конец данных
«
Ответ #11 :
Август 18, 2009, 09:33 »
Если протокол уже готовый и менять его нелзья, а по какой-то причине в нем нет длины тела пакета, то можно воспользоваться эвристическим приемом:
1. Принимаем первую порцию данных
2. Ждем n-ное время
3. Если пришло то принимаем и опять на пункт 2. Если не пришло то считаем что данные закончились.
Число n подбирается исходя из ожидаемой ширины канала (для обычного русского интернета хватает числа 1,5 секунды)
Записан
boobsik
Гость
Re: QTcpSocket конец данных
«
Ответ #12 :
Август 18, 2009, 09:36 »
в http 1.1 видимо "эвристический прием" не подойдет)) там за одними данными сразу могут идти другие)
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: QTcpSocket конец данных
«
Ответ #13 :
Август 18, 2009, 11:14 »
Я с ходу не могу себе представить кто и в каких случаях будет применять т.н. "эвристический прием". Ведь его надежность 0.
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
BlackTass
Гость
Re: QTcpSocket конец данных
«
Ответ #14 :
Август 18, 2009, 18:35 »
Цитата: pastor от Август 18, 2009, 11:14
Я с ходу не могу себе представить кто и в каких случаях будет применять т.н. "эвристический прием". Ведь его надежность 0.
Диалоговый протокол. Самое оно. Хотя лучше чем размер пакета не придумано конечно ничего.
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...