Я Фоюмчанин ? дааааа)
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
1

Подключится к мессенджеру для чтения сообщений

19.12.2015, 21:19. Показов 538. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток.
Все наверное знают Viber.
У меня стоит на комне и очень не удобно порой им пользоваться.
Я хочу написать приложение в котором мне нужно каким то образом просто получать пришедшие мне текстовые сообщения.
Знать бы как Viber подключается к серверу, я бы просто читал сообщения и всё.
Или может можно как то прямо из вайбера читать?
Ребят, подскажите, нужны все идеи.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2015, 21:19
Ответы с готовыми решениями:

Программа для записи сообщений, чтения и добавления в файл
Уважаемые программисты, нужна ваша помощь. Я будущий программист, учусь. Мне нужно создать...

Каким образом после чтения из файла, узнать позицию для чтения следующего куска байт
Здравствуйте, задача такова есть файл, размером 1000 байт, нужно открыть его считать 100 байт,...

Получение IP-адреса удаленного компьютера и отправление на главный комп по почте либо мессенджеру
Доброго времени суток, форумчане. Необходимо выполнить задачу: в компании N магазинов, каждый из...

Не могу подключится к источнику данных в проекте для смарт-устройств
Пишу прогу для терминала сбора данных со сканером штрих-кода (под Windows CE). Использую Visual...

8
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
20.12.2015, 05:50 2
ivan.-94, это обычно делается с помощью специальных API, но у вайбера его нет и протокол закрыт.
Остаётся вручную проследить траффик от вайбера с помощью Wireshark, например.
0
Я Фоюмчанин ? дааааа)
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
20.12.2015, 11:50  [ТС] 3
tezaurismosis, Спасибо за отклик.
Оказывается Viber работает с базой данных SQLite и всегда пишет в неё.
Это я уже проверил.
Тут появляется новый вопрос.
Как мне узнать, что были внесены изменения?

Добавлено через 16 минут
Нет смысла мне проверять изменился ли файл(Считая CRC или ещё как то).
Т.к. в БД постоянно что то записывается, там даже настройки сохранены...
Мне нужно отслеживать только одну таблицу.
Конечно это БД Локальная и можно таймером каждый раз вызывать SELECT COUNT(*) или же SELECT MAX(ID), но ведь зная как это работает получается, что мы всегда пробегаем полностью все записи, а там у меня к примеру уже более 13 000 записей.

Может можно как то узнавать что произошло добавление на уровне событий?
0
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
20.12.2015, 11:58 4
ivan.-94, а к этой базе есть доступ, вы пробовали её открыть?
Если она запаролена, а пароля нет, то ловить нечего.
Хотя... есть другой вариант, немного велосипедный. При добавлении или удалении данных из базы/в базу, её объём и содержимое будет изменяться и будет меняться CRC файла. Это проще всего, базу даже не нужно будет открывать, но какие изменения там произошли будет неизвестно.

Добавлено через 1 минуту
Цитата Сообщение от ivan.-94 Посмотреть сообщение
Конечно это БД Локальная и можно таймером каждый раз вызывать SELECT COUNT(*) или же SELECT MAX(ID)
Тоже вариант, если база локальная и открытая дл чтения, почему бы и нет. Ну займёт запрос 2-3 секунды, это же не так страшно.

Добавлено через 3 минуты
Нашёл метод проще - читать дату обновления данных в базе, это много времени точно не займёт.
20.23 The INFORMATION_SCHEMA TABLES Table
Beginning with MySQL 5.7.2, UPDATE_TIME displays a timestamp value for the last UPDATE, INSERT, or DELETE performed on InnoDB tables that are not partitioned.
SQL
1
2
3
4
SELECT UPDATE_TIME
FROM   information_schema.tables
WHERE  TABLE_SCHEMA = 'dbname'
   AND TABLE_NAME = 'tabname'
0
Я Фоюмчанин ? дааааа)
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
20.12.2015, 12:10  [ТС] 5
tezaurismosis, SQLite - это локальная БД, просто файлик, он не требует ни аутентификации ничего.
И там нет information_schema.
Я вижу только 1 выход.
Сразу выполняем A=SELECT MAX(ID)...
Потом по таймеру SELECT COUNT(*) ... WHERE ID>A и если не 0, то читаем всё, что новое и меняем А на новый MAX(ID)
0
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
20.12.2015, 12:17 6
Цитата Сообщение от ivan.-94 Посмотреть сообщение
это локальная БД, просто файлик
Ну благо ещё не забыл, что такое SQLite, просто базы шифрованные бывают
Отпишитесь о результатах, пожалуйста - интересно, получится ли.
0
Я Фоюмчанин ? дааааа)
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
20.12.2015, 16:10  [ТС] 7
У меня всё получилось.
Миниатюры
Подключится к мессенджеру для чтения сообщений  
0
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
20.12.2015, 18:54 8
ivan.-94, супер. А код не покажете? Хотя бы SQL-запроса.
0
Я Фоюмчанин ? дааааа)
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
20.12.2015, 19:54  [ТС] 9
Получаем ид последнего сообщения и запоминаем его.
SQL
1
SELECT MAX(EventID) FROM Messages
Далее в таймере отслеживаем появление новых сообщений.
SQL
1
SELECT MAX(EventID) FROM Messages
Если последний ид>предыдущего, читаем бд
SQL
1
SELECT * FROM Messages WHERE Messages.EventID>newID
Там в поле Body текст сообщения
Откройте БД через какой нибудь SQLiteNavigator и смотрите.
3
20.12.2015, 19:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2015, 19:54
Помогаю со студенческими работами здесь

Защита чтения Flash памяти от пиратского чтения у STM8S
Добрый день STMовцы! Есть ли защита от чтения прошивки с флеш у STM8S? Если есть, то какими...

Как запретить доступ для чтения с диска C для определенной программы?
День добрый ! Собственно, есть к примеру, утилита без настроек, которая ищет информацию по всему...

Программа для Андроид (TX33) для чтения exe-файлов, написанных на C#
Где найти программу, которая устанавливается на Андроид (TX33) и позволяет работать с exe-файлом,...

Как открыть файл одновременно для чтения и для записи?
Делаю вот так, но ничего не получается.:( std::fstream inOutCredit("credit.dat", std::ios::ate |...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru