1
: Октября 02, 2025, 12:13
|
Автор sergek - Последний ответ от sergek
|
Да, я это видел, но, поскольку мало разбираюсь в сетевых сервисах, пытаюсь сформулировать вопрос, чтобы обратиться к специалистам.
Дополнительная информация: - у меня несколько серверов (8 штук), на них есть Ubuntu 22.04 и 20.04, есть две виртуальные машины с 22.04. Это я к тому, что разнообразие настроек linux присутствует)); - на всех, кроме одного сервера, подняты клиенты OpenVPN и доступ к ним идет по vpn. На одном сервере openvpn нет и доступ осуществляется по белому IP; - ошибки наблюдаются везде, кроме последнего, где нет vpn; - такие же приложения подняты на полсотне малин с vpn и Raspbian GNU/Linux - ошибок нет. И вопросы: - означает ли это, что проблема связана с конфликтом vpn с сетевыми сервисами? - и куда дальше копать - в настройки VPN или проблема в NetworkManager, который плохо работает с VPN? - если последнее, то NetworkManager неправильно работает в операционной системе или Qt?
|
2
: Октября 02, 2025, 11:12
|
Автор sergek - Последний ответ от Авварон
|
беглый гуглеж показывает что это ошибка дбаса связанная с сетевыми коннектами - например пропадает Вики мб туда покопать мб в системе криво настроено что?
|
3
: Октября 02, 2025, 00:12
|
Автор sergek - Последний ответ от sergek
|
Коллеги, в сетевом приложении изредка фиксируется предупреждение "Object does not exist at path “/org/freedesktop/NetworkManager/ActiveConnection/xx”. Обычно это не приводит к каким-либо последствиям, но за последний месяц было три случая, когда приложение теряло подключение и не восстанавливало его даже при переподключении к хосту.
Деталей много, я стараюсь выделить минимум, который бы высветить проблему. Приложение работает в виде процесса на Ubuntu 22.04, Qt 5.13. Этих приложений на сервере запущено несколько (8 штук). Каждый из них взаимодействует по Modbus TCP со своими устройствами в локальной сети. Конфигурации у всех процессов одинаковые, периферия (устройства, сетевое оборудование и др.) тоже.
Предупреждение "Object does not exist..." возникает одновременно во всех процессах (плюс минус несколько мс, фиксируется журналами процессов). Но сбои в виде потери подключения наблюдался только на одном. Как я раньше упомянул, переподключение к хосту ничего не дает. Перезапуск процесса проблему решает, обмен восстанавливается.
В интернете встречал упоминание, что ошибка связана с багом в NetworkManager (например, QTBUG-114666). К сожалению, моих знаний сетевых служб не хватает. Есть у меня предположение, что проблему можно решить обходным путем очисткой кэша сетевых подключений в NetworkManager после обнаружения остановки обмена. Типа QNetworkAccessManager::clearConnectionCache(), но как это сделать, если обмен идет через QTcpSocket и доступа к NetworkManager нет? Можете что-нибудь подсказать?
|
4
: Сентября 21, 2025, 10:51
|
Автор kkmspb - Последний ответ от kkmspb
|
Коллега - провокатор)) И все ж... Зачем класть 7 лет (  ) на разработку того, что уже есть? Форкнуть, к примеру, 5.15, выкинуть лишнее, добавить недостающее, послать фиников на ..., изменить лицензию на "всем всё разрешено", и все дела. Понимаю, тем, кто до сих пор работает на забугор, это не понравится, но у них и так все хорошо. А все остальные будут довольны. В общем я сейчас так и поступаю, но на Qt4. Это к вопросу, что в Qt 5,6 дофига чего добавлено. На самом деле я до сих пор не вижу необходимости переходить на Qt5. Но посылать фиников я тоже никуда не хочу, просто если так складывается, что развитием Qt Sql я занимаюсь индивидуально, там модель данных уже полностью своя и представление свое (отрисовка) , то может уже пора и все исходники переработать? Чего нам терять то? Правда времени сейчас не хватает, т.к. на том же Qt4 пишу десктопы и довольно успешно, но заяб..ют разговоры, что я кому-то должен исходники открывать (релиз собираю исключительно статически).
|
5
: Сентября 20, 2025, 18:10
|
Автор kkmspb - Последний ответ от sergek
|
Коллега - провокатор)) И все ж... Зачем класть 7 лет (  ) на разработку того, что уже есть? Форкнуть, к примеру, 5.15, выкинуть лишнее, добавить недостающее, послать фиников на ..., изменить лицензию на "всем всё разрешено", и все дела. Понимаю, тем, кто до сих пор работает на забугор, это не понравится, но у них и так все хорошо. А все остальные будут довольны.
|
6
: Сентября 20, 2025, 17:21
|
Автор kkmspb - Последний ответ от kambala
|
версия 1.0 (которую видимо за 7 лет и написали) порядочно отличается даже от 4-й. А сколько всего добавили в 5 и 6 уж можно и не говорить. наверное никому неохота переизобретать колесо с сомнительным выхлопом. И наконец я бы разрешил все это добро использовать под лицензией - как хочу так и пользуюсь, хоть в закрытых проектах, хоть в открытых, хоть в коммерческих, хоть в бесплатных, компилировать хоть динамически/ хоть статически.
у Qt нет с этим никаких проблем. Или щас опять пойдут байки про «если линковать статически, то надо открывать код приложения»? 
|
7
: Сентября 20, 2025, 16:49
|
Автор rik_mik_2raza - Последний ответ от kkmspb
|
такие вещи надо с помощью отладчика по сырцам решать, 5 минут и все станет очевидно. бага там нет
|
8
: Сентября 20, 2025, 14:12
|
Автор kkmspb - Последний ответ от kkmspb
|
Я тут новичок, но Qt использую давно и до сих пор сижу на Qt4 , но речь не об этом. В основном кодю десктоп приложения под винду. И все у меня хорошо, на мой взгляд, все меня устраивает. Чего не хватает в Qt развиваю сам, т.е. добавляю новый функционал, в основном в ветке qt/sql.
Но, по мере погружения в исходники Qt (500 классов вроде), часто стал задумываться - а в чем трудность сделать свой фреймворк и почему таких с++.фреймворков по пальцам пересчитать, при чем одной руки?
Хочу изложить, какое у меня сложилось понимание основных моментов, на которые надо сразу обратить внимание. В чем основные моменты базовых классов.
1. Как ни странно это реализация очереди сообщений от операционной системы.
2. Метаобъектная система, реализация своего QObject аналога. Тут же и технология сигнал/слот как следствие, причем межпоптоковый вариант тоже должен быть и как раз через очередь сообщений каждого потока отдельно его надо реализовывать.
3. Как ни странно это общий тип данных по примеру QVariant, чтобы кастовать туда сюда разные типы данных как хочу на основе кастомных метаданных, очень удобная фича.
4. Гуй всемогущий! Реализовать парадигму отрисовки виджетов с применением для этого лейаутов или чего-то подобного.
5. Наконец-то сделать нормальные классы для работы с базами данных, CRUD, внешние связи и.д. Но это уже детали.
6. Конечно сетевой протокол с использование openssl не забываем.
Чего ещё забыл? Ах да, надо лет 7 свободного времени. Но по факту Хаавард Норд на пару с ещё с одним студентом сделали эти примерно 500 классов лет за семь, насколько я знаю. Причем с учётом кроссплатформенности, но я лично ограничился бы для себя виндой пока, хоть это и кощунство.
И наконец я бы разрешил все это добро использовать под лицензией - как хочу так и пользуюсь, хоть в закрытых проектах, хоть в открытых, хоть в коммерческих, хоть в бесплатных, компилировать хоть динамически/ хоть статически.
7. Наверное забыл контейнеры типа QMap, QList и т.д.
|
9
: Сентября 20, 2025, 13:18
|
Автор KSergeyP - Последний ответ от kkmspb
|
Или как у нас QpSqlTableModel скачать. Там и внешние связи по фен Шую реализованы и CRUD нормальный.
|
10
: Сентября 20, 2025, 13:16
|
Автор KSergeyP - Последний ответ от kkmspb
|
Наследоваться от QSqlRelationalTableModel и переопределить selectStatement например.
|
|