freeExec, да, спасибо, я нашел пример скрипта, где определяется адрес по нажатие мышкой по карте, но когда я вставил скрипт карты и скрипт определения адреса по координатам, у меня выдает ошибку, что объект ymaps не определен!(
Вот отсюда я копировал код: https://yandex.ru/dev/maps/jsbox/2.1/event_reverse...
Разумеется, я вставил скрипт своей карты со своими ключом. Я пробовал и загружать скрипт из файла, и просто вставлять скрипт прямо в html. Ни то, ни другое не сработало...
Пробовали, но там условия непонятные.... Написано, что нельзя сохранять/изменять данные, полученные с помощью API, а мне надо их хранить.
Поправьте, если заблуждаюсь.
xorknown, socketDescriptor
Спасибо, я понял, что моя архитектура - полное убожество. Умны люди с большой репой на stackoverflow подсказали мне, что сервер на Qt может спокойно работать в одном потоке даже с 10-20к сокетами) Так что я переделываю сервер в один поток. Переделывать немного, оказалось, и так действительно проще.
Игорь Джулай, большое спасибо!)
Такой вариант меня тоже устраивает.
Я кстати искал информацию в оф доках, но видимо плохо искал... Не ткнете носом, если не трудно?
xorknown, БОЛЬШОЕ СПАСИБО! Я обязательно попробую, но вы меня прямо воодушевили)) Огромное спасибо. Сейчас уже поздно, как сделаю, напишу))
Для меня это очень полезная информация, спасибо
xorknown, я думаю, может быть ошибка, когда кто-то из пользователей прислал на сервер сообщение, сервер отсылает его всем другим пользователям через их сокеты (тут я использую мьютексы, так что все ок), и в то же время какой-то другой пользователь решил написать свое сообщение.
Получается, что в сокет пользователя придет сообщение с сервера, и в это же время сам пользователь запишет туда свои данные...
Эх, в любом случае, спасибо вам за такую поддержку)
xorknown, пока что действительно вижу только один выход: при подключении клиента СРАЗУ создать 2е подключение и иметь 2 разных сокета: один для записи, другой для чтения... Только как-то костыльно это выглядит...
Решил блин после ЕГЭ побаловать себя прогой..) Думал, закончу проект на месяц раньше
xorknown, Да, вы правы. Я тоже об этом задумывался, но из-за нехватки знаний не был уверен... Создать отдельное подключение здесь невозможно из-за архитектуры (хотя "это" сложно назвать архитектурой). Если не против, я вам расскажу в общем, как все работает.
1) Сервер с помощью сигналов/слотов принимает новые соединения.
2) Создается новый поток и объект типа Worker, который и обрабатывает все запросы пользователя, хранит в себе класс юзера с его данными.
3) Когда пользователь посылает команду о подключении к какому-то каналу (имеется массив каналов, каждый канал хранит в себе массив указателей на сокеты пользователей, чтобы можно было посылать им сообщения), тут-то на клиенте и создается новый поток для получения сообщений.
Т.е. когда пользователь пишет какое-то сообщение и отправляет его, все остальные юзеры получают его в своем доп. потоке (так должно работать по идее). Я подумал, если на клиенте работать в одном потоке, данные могут смешаться: когда юзер отправляет сообщение, и одновременно с этим приходят данные с сервера.
Теперь я совсем запутался и не знаю, что делать...
xorknown, не поняли) Ну, вероятно, я плохо объясняю.
1) Есть главный поток, в котором производилось подключение к серверу.
2) В определенный момент я создаю 2й поток для приема сообщений от сервера, туда я передаю дескриптор сокета.
3) Во 2м потоке я создаю новый сокет по дескриптору старого и там же, во 2м потоке, делаю connect
Вот и все. Я сам еще плохо понимаю, как работают сокеты в Qt...
Когда сервер отправляет данные, они, почему-то, приходят в тот сокет, который в главном потоке. А там-то никаких connect'ов нету! К слову, ради теста я сделал в главном потоке тот самый connect, и все заработало, но мне нужно во 2м потоке
Так я подключаю карту и скрипт для обработки нажатия по карте.
Вот что выдает браузер:
Сам скрипт обработки нажатия я скинул в ссылке. Надеюсь, вам будет удобно посмотреть его там.