Witam,
Tworzę prostą komunikację pomiędzy dwoma użytkownikami GG z poziomu konsoli linuxowej. Opieram się na bibliotekach libgadu.
Obecnie od wysyłania wiadomości mam taki kod:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include "libgadu.h"
int wyslij(int numer, int na_jaki_numer, char *wiadomosc)
{
static int licznik = 1;
struct gg_session *sess;
struct gg_event *e;
struct gg_login_params p;
gg_debug_level = 0;
memset(&p, 0, sizeof(p));
p.uin = numer;
p.password = "123123123"; // <--- tu wpisz swoje hasło
p.encoding = GG_ENCODING_UTF8;
if (!(sess = gg_login(&p)))
{
printf("Nie udało się połączyć: %s\n", strerror(errno));
gg_free_session(sess);
return 1;
}
printf("Połączono.\n");
if (gg_notify(sess, NULL, 0) == -1)
{
printf("Połączenie przerwane: %s\n", strerror(errno));
gg_free_session(sess);
return 1;
}
int i=10;
while(i--)
if (gg_send_message(sess, GG_CLASS_MSG, na_jaki_numer, (unsigned char*) wiadomosc) == -1)
{
printf("Połączenie przerwane: %s\n", strerror(errno));
gg_free_session(sess);
return 1;
}
while (1)
{
if (!(e = gg_watch_fd(sess)))
{
printf("Połączenie przerwane: %s\n", strerror(errno));
gg_logoff(sess);
gg_free_session(sess);
return 1;
}
if (e->type == GG_EVENT_ACK)
{
printf("\t%d. numer: %d\n", licznik, numer);
gg_free_event(e);
break;
}
gg_free_event(e);
}
gg_logoff(sess);
gg_free_session(sess);
licznik++;
return 0;
}
int main(int argc, char **argv)
{
if (argc < 2)
{
fprintf(stderr, "Użycie: %s <numer_odbiorcy> <wiadomość>\n", argv[0]);
return 1;
}
// poniżej wpisz uzbierane numery
int numery[]={123, 456};
for(int i=0; i < (sizeof(numery)/sizeof(int)); i++)
wyslij(numery[i], argv[1], argv[2]);
return 0;
}
Program odpalam z dwoma argumentami numerem odbiorcy i wiadomością, i co dziwne po odpaleniu loguje się, ale nie wysyła wiadomości podanej w argumencie.
Może ktoś podpowiedzieć co jest nie tak?
Pozdrawiam
//edit Rozwiązałem problem. Trzeba było zrzutować do int'a argument podawany jako numer gg :D
Do zamknięcia, sorry za zamieszanie :P