|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.07.2017, 19:29 | #1 |
Форумчанин
Регистрация: 07.08.2011
Сообщений: 576
|
QTcpSocket окончание передачи данных
Вот так передаются данные
Код:
Вообще тут вопрос даже в том- как узнать, что сокет занят приемом или передачей данных? Последний раз редактировалось SAMOUCHKA; 26.07.2017 в 19:48. |
27.07.2017, 07:19 | #2 | |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
А сокеты у вас блокирующие или не блокирующие(асинхронные)?
Для асинхронных делаем как описано в: https://wiki.qt.io/Threads_Events_QObjects/ru Второй вариант, вы можете реализовать квитирование в своём прикладном протоколе. Заводим объект с состоянием сокета и меняем его. Цитата:
Любая синхронизация снижает скорость работы.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|
27.07.2017, 11:48 | #3 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
В принципе для этого есть вызов shutdown() но он похоже в Qt не используется.
Вам остается самому реализовать в своем протоколе сигнал "у меня нет больше данных для отправки", либо изначально сообщать ожидаемый объем данных. |
27.07.2017, 13:08 | #4 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
Т.е. ваш прикладной протокол может иметь 1 из следующих возможностей: 1. Самое простое - по окончании записи вызывает shutdown - т.е. рвет соединение. 2. Пишет сначала длину, потом данные. 3. Пишет данные и оканчивает их терминальным условным символов. 4. Пишет блоки фиксированой длины. Эта схема вообще на любых языках/библиотеках применяется для работы с сетью (в т.ч., например, с кабелем COM). Последний раз редактировалось alexzk; 27.07.2017 в 13:10. |
|
27.07.2017, 16:55 | #5 | |
Форумчанин
Регистрация: 07.08.2011
Сообщений: 576
|
Сокеты асинхронные.
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Передачи данных | Eihmann | Помощь студентам | 0 | 12.03.2013 22:20 |
Скорость передачи данных | Человек_Борща | Работа с сетью в Delphi | 4 | 23.12.2012 18:51 |
Порядок передачи данных.+ | Farrel | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 13.05.2011 19:11 |
Странные передачи данных | bulldog5293 | Работа с сетью в Delphi | 14 | 28.11.2010 23:33 |