Russian Qt Forum

Qt => Работа с сетью => Тема начата: G-virus от Июнь 30, 2010, 22:23



Название: Нужна библиотека для работы с Jabber. Пишу бота
Отправлено: G-virus от Июнь 30, 2010, 22:23
Всем привет! Посоветуйте плиз нормальную библиотеку для работы с жабой. Гуглил - уже два раза напоролся((

одна библа тупо не собиралась, а после того как все таки собралась, без всяких ошибок прога запускается, а контакт не появляется онлайн. Другая библа DLL написана на C# и я ваще хз как юзать ее на С++.
Киньте ссылки на хорошие библиотеки если у кого есть  :)

P.S. qxmpp и agsXMPP.dll не предлагать


Название: Re: Нужна библиотека для работы с Jabber. Пишу бота
Отправлено: Sahab от Июнь 30, 2010, 22:50
http://delta.affinix.com/iris/ (http://delta.affinix.com/iris/)


Название: Re: Нужна библиотека для работы с Jabber. Пишу бота
Отправлено: Sanya от Июль 01, 2010, 09:36
А чем QXMPP не понравилась?
Тем что не смог подключиться?

ИМХО, хорошо написанная библиотека, которую легко поправить под себя.


Название: Re: Нужна библиотека для работы с Jabber. Пишу бота
Отправлено: G-virus от Июль 01, 2010, 14:14
А чем QXMPP не понравилась?
Тем что не смог подключиться?

ИМХО, хорошо написанная библиотека, которую легко поправить под себя.

Я собрал ее, все вроде казалось бы заработало. А коннект и прием\передача сообщений не происходит. Мб вы поможете мне?  :)


Название: Re: Нужна библиотека для работы с Jabber. Пишу бота
Отправлено: Sanya от Июль 01, 2010, 14:44
0. можно на ты.

1. Можно, только конкретные вопросы надо ставить.

2. Вообще я с месяц не забирал свежую версию с svn, но думаю принципиально ничего не изменилось. Так вот, там есть пример подключения к googleвскому серверу - он полностью рабочий. И не зубудь включить логировавание в файл - так легко понять как ведет себя соединение.

P.S.:
Я, по началу, прям в exe вживлял класс - так проще было разбираться ...


Название: Re: Нужна библиотека для работы с Jabber. Пишу бота
Отправлено: G-virus от Июль 01, 2010, 18:37
там есть пример подключения к googleвскому серверу - он полностью рабочий.

Так он вроде коннектится к гуглу, в консоли появляется host found. Коннектится и к джабберу, но контакта не появляется в сети: то есть я тупо заменил хост\логин\пароль. По идее при таком коннекте контакт должен появится в сети. Я сделал аккаунт на jabber.ru, добавил к себе в друзья его, авторизовал все как полагается. В проге делаю коннект - без ошибок все делается, а контакт не появляется в сети. Собирал оба примера. Кстати в том примере, где осуществляется прием\передача сообщений, сообщение либо не доходит до проги, либо не посылается ею функцией sendPacket. Не знаю даже почему.


Название: Re: Нужна библиотека для работы с Jabber. Пишу бота
Отправлено: Sahab от Июль 02, 2010, 00:19
+1
искаробки не работает...
допиливать руками


Название: Re: Нужна библиотека для работы с Jabber. Пишу бота
Отправлено: Sanya от Июль 02, 2010, 07:36
G-virus:
А проверял эти 2 аккаунта на других клиентах, типа spark?

Можешь выложить код?

Sahab:
Брал месяц назад последнюю версию с svn - менял тока в pro файле имя конечной библиотеки и тип со статической на динамическую с неявным подключением - все работает.


Название: Re: Нужна библиотека для работы с Jabber. Пишу бота
Отправлено: G-virus от Июль 02, 2010, 11:15
G-virus:
А проверял эти 2 аккаунта на других клиентах, типа spark?
Можешь выложить код?

Нет. Проверил только jabber-аккаунт на мирке и все.

Код как из примера. Вот:
Код
C++ (Qt)
#include <QtCore/QCoreApplication>
#include <QXmppLogger.h>
#include <QXmppMessage.h>
#include <QXmppClient.h>
#include <iostream>
using namespace std;
 
 
class echoClient : public QXmppClient
{
   Q_OBJECT
public:
   echoClient(QObject *parent = 0);
   ~echoClient();
public slots:
   void messageReceived(const QXmppMessage&);
};
 
echoClient::echoClient(QObject *parent)
   : QXmppClient(parent)
{
   bool check = connect(this, SIGNAL(messageReceived(const QXmppMessage&)),
       SLOT(messageReceived(const QXmppMessage&)));
   Q_ASSERT(check);
}
 
echoClient::~echoClient()
{
 
}
 
 
void echoClient::messageReceived(const QXmppMessage& message)
{
   QString from = message.getFrom();
   QString msg = message.getBody();
   cout << msg.toStdString() << "\n";
   sendPacket(QXmppMessage("", from, "Пакет получен"));
}
 
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
   cout << "Hi, this is Jabber-Bot\n";
   QXmppLogger::getLogger()->setLoggingType(QXmppLogger::STDOUT);
echoClient client;
client.connectToServer("www.jabber.ru", "css_server", "steelaxe", "jabber.ru");
cout << "Connected!";
system("pause");
return a.exec();
}
 


Название: Re: Нужна библиотека для работы с Jabber. Пишу бота
Отправлено: Sanya от Июль 02, 2010, 11:43
так, а можешь
setLoggingType(QXmppLogger::FILE)
и содержимое файла дать

Есть идеи, но гадать не хочу - лог точно все скажет.


Название: Re: Нужна библиотека для работы с Jabber. Пишу бота
Отправлено: G-virus от Июль 02, 2010, 12:22
В лог файле вот это
Код:
13:19:25.281 : Connecting to: www.jabber.ru:5222

13:19:27.890 : Host found


Название: Re: Нужна библиотека для работы с Jabber. Пишу бота
Отправлено: Sanya от Июль 02, 2010, 12:30
И все?
Вот мой кусок который как минимум есть еще и у меня:
11:58:16.664 INFO Connecting to: tili-tili
11:58:16.664 INFO Connecting to: tili-tili
11:58:16.711 DEBUG Host found
11:58:16.727 INFO Connected
11:58:16.727 CLIENT <?xml version='1.0'?><stream:stream to= etc.

попробуй убрать system("pause");


Название: Re: Нужна библиотека для работы с Jabber. Пишу бота
Отправлено: G-virus от Июль 02, 2010, 13:00
13:19:25.281 : Connecting to: www.jabber.ru:5222

13:19:27.890 : Host found

13:58:17.921 : Connecting to: www.jabber.ru:5222

13:58:30.031 : Host found

Убрал
Вот что)


Название: Re: Нужна библиотека для работы с Jabber. Пишу бота
Отправлено: Sanya от Июль 02, 2010, 15:01
Извини, но я тут немного с работой зашиваюсь - можешь выложить архивчик с уже готовым проектом?


Название: Re: Нужна библиотека для работы с Jabber. Пишу бота
Отправлено: G-virus от Июль 02, 2010, 18:15
Извини, но я тут немного с работой зашиваюсь - можешь выложить архивчик с уже готовым проектом?

тык (http://dl.dropbox.com/u/6052533/example_1_echoClient.rar)


Название: Re: Нужна библиотека для работы с Jabber. Пишу бота
Отправлено: bvn13 от Июль 06, 2010, 00:08
чуть-чуть Офф-а:
А эта библа все так до сих пор и не поддерживает чат-комнаты?


Название: Re: Нужна библиотека для работы с Jabber. Пишу бота
Отправлено: G-virus от Июль 06, 2010, 11:54
чуть-чуть Офф-а:
А эта библа все так до сих пор и не поддерживает чат-комнаты?

а хрен знает, я не могу ваще в ней разобраться  ???


Название: Re: Нужна библиотека для работы с Jabber. Пишу бота
Отправлено: bvn13 от Октябрь 02, 2010, 21:32
если еще актуально. я изменил строку коннекта на вот такую:

client.connectToServer("jabber.ru", "bvn13_work", "password", "jabber.ru");

и все заработало без проблем и телодвижений.

видимо, автору не надо указывать www в адресе сервера.