Libgadu i "host not found"

0

Witam,
Próbuję napisać program, który połączy się z serwerem gg za pomocą biblioteki libgadu. Wiem, że biblioteka ta pisana była pod linuksa ale używam wersji przeportowanej na windows ze źródeł wtyczki gg dla komunikatora Miranda. Udało mi się skompilować program pod Visual C++ 2005 Express Edition. Z tym, że gdy uruchamiam program przy połączniu synchronicznym, otrzymuję komunikat:
// gg_login() host "appmsg.gadu-gadu.pl" not found
Przy połączeniu asynchronicznym ostatni komunikat to:
** gg_resolve(003A27B8, 003A27E0, "appmsg.gadu-gadu.pl");
następnie "Wystąpił problem z aplikacją i zostanie ona zamknięta" i jest jeszcze komunikat który odzyskałem z zapisów debugera:
// gg_login() resolving failed (errno=%d, %s)

Kod aplikacji:

#include <iostream>
#include <conio.h>
#include <libgadu.h>

	int main() {

		struct gg_session *session;
		struct gg_login_params p;

		gg_debug_level = ~0;

		memset(&p, 0, sizeof(p));
		p.uin = 000;
		p.password = "...";
		p.async = 1;

		session = gg_login(&p);

		_getch();

	}

Wygląda to tak, jakby program nie miał połączenia z internetem, a może to coś innego? Będę wdzięczny za każdą pomoc :)

0

firewall i zablokowany port? zla nazwa serwera?

0

A jest możliwe, żeby miranda, używająca wtyczki gg, która korzysta z tej samej wersji libgadu co ja, nie miała problemów z połączeniem? Nie wydaje mi się, więc nie jest to wina zablokowanego portu. A nazwa serwera jest wpisana na stałe w libgadu, nic nie zmieniałem.

Próbowałem ominąć pobieranie IP przez libgadu, podając numer IP wybranego serwera gg do parametru server_addr struktury gg_login_params, ale nie wiem jak zapisać adres IP w postaci uint32_t. Jednak wątpie czy to pomoże skoro libgadu na samym starcie wyrzuca błąd "host not found" (zaznaczam ze internet działa).

0

z miranda - trudno mi powiedziec.. taki np. jabber z transportem GG w ogole nie laczy sie z serwerami gg bezposrednio..

uint32_t to sa 4 bajty, dokladnie tak samo jak adres IP - aaa.bbb.ccc.ddd. przelicz wszystkie segmenty na hexy i sklej je razem. w zaleznosci od tego czy Twoj procesor jest littleendian czy bigendian - ow uint32_t bedzie mial postac 0xAABBCCDD albo 0xDDCCBBAA

a tak w ogole to sprobuj ten adres IP spingowac najpierw albo polaczyc sie na niego pod odpowiedni port np. telnetem i zobaczyc czy w ogole przyjmuje polaczenia

0

Zapisałem ten adres w uint32_t i teraz zamiast błędu resolving failed, dostaję:
// gg_login() direct connection failed (errno=%d, %s)

Czyli na jedno wychodzi - nie ma połączenia z internetem.

Próbowałem też spingować ten ip którego używam (217.17.45.147) i na pingi odpowiada. Telnetowałem na porcie 8074 (na tym samym próbuje się połączyć libgadu) i połączyłem sie dostając w odpowiedzi jakieś krzaki ale to chyba nieważne, skoro połączenie nie zostało odrzucone.

0

Przed użyciem biblioteki trzeba ją zainicjować funkcją WSAStartup.
Spowoduje to załadowanie biblioteki ws2_32.dll, bez tego funcje Winsock nie będą działać.
Przedtem należy jeszcze dołączyć plik nagłówkowy winsock.h

Następnie na początku programu trzeba napisać:

WORD wVersionRequested=MAKEWORD(1,0);
WSADATA wsaData;
WSAStartup(wVersionRequested, &wsaData);

a na końcu należy zwolnić bibliotekę funkcją:

WSACleanup();

Powinno działać, u mnie działa :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1