[J2ME] Łączenie z serwerem XMPP.

0

Witam. Próbuję stworzyć prostego klienta Jabbera. Doszedłem do wniosku, że na pierwszy ogień powinno pójść połączenie z serwerem i niestety już tutaj pojawiają się problemy.
Korzystam z biblioteki BEEP(http://sourceforge.net/projects/beep/), według dokumentacji połączenie ustala się w taki sposób:

// Create a connection to the beep.org XMPP server.
 XMPPConnection con = new XMPPConnection("beep.org",3333,"service.com");

Niestety ten sposób nawet się nie kompiluje. Po moich przeróbkach wyskrobałem coś co się kompiluje:

SnippetProcessor xxx = null;
            textItem.setString("zalogowany");
            try {
                XMPPConnection polaczenie = new XMPPConnection("beep.org", 3333, "service.com", xxx, 0);
            } catch(XMPPException exc) {
                textItem.setString("Nie zalogowany");
            }

Dalej nic z tego, połączenie rzuca wyjątek i napis = nie zalogowany. Wie ktoś w czym problem?

0

Przejrzałem pobieżnie ich źródła i po pierwsze to zero w twoich przeróbkach oznacza WIFI_BLUETOOTH (0), jesteś pewien że twój emulator to wspiera? Testowanie to ja bym zaczął od NOWIFI_NOBLUETOOTH (3), wtedy połączenie nawiązywane jest przy pomocy:

connection = (StreamConnection)Connector.open("ssl://" + host + ":" + port);

Jakoś mnie to ssl nie przekonuje. Zawsze możesz przerobić ssl na socket i zobaczyć jak wygląda komunikacja między aplikacjami.

PS: Na komórce używam bombus-a i działa bezproblemowo może zobacz ich źródła.

0

A gdzie mogę znaleźć kody źródłowe tego bombusa. Ten sposób połączenia, który opisałeś wyżej, też niestety rzuca wyjątkiem....

0

Dałem sobie spokój z tymi bibliotekami i z XMPP. Przerzuciłem się na protokół gadu gadu. Teraz czytając to http://toxygen.net/libgadu/protocol/ staram się połączyć z appmsg.gadu-gadu.pl w celu uzyskania odpowiedzi z adresem ip odpowiedniego serwera gg. Robię to tak:

try {
            StreamConnection connection = (StreamConnection) Connector.open("http://www.appmsg.gadu-gadu.pl");          
        } catch(IOException exc) {

        }

Wyjątek nie zostaje rzucony więc połączenie jest. Musze tam wysłać taki komunikat:

GET /appsvc/appmsg_ver8.asp?fmnumber=NUMER&fmt=FORMAT&lastmsg=WIADOMOŚĆ&version=WERSJA HTTP/1.1
Connection: Keep-Alive
Host: appmsg.gadu-gadu.pl

No to otwieram strumień, wysyłam, chcę otrzymać odpowiedź, otwieram strumień:

OutputStream os = connection.openOutputStream();
            os.write("GET /appsvc/appmsg_ver8.asp?fmnumber=4910234&fmt=1&lastmsg=1&version=8.0.0.7669 HTTP/1.1".getBytes());
            InputStream is = connection.openInputStream();

I tutaj rzuca wyjątkiem i nic dalej nie mogę zrobić. Pewnie robię coś źle. Byłbym wdzięczny za podpowiedź z przykładem jak poprawnie wysyłać i odbierać pakiety w javie.

0

O nie tylko nie gadu.

Dobra to robisz tak: zapominasz o gadu :)
Ściągasz source.zip z http://sourceforge.net/projects/kvmjab/
Po dodaniu źródeł do twojego projektu wywalasz: seConnector.java, KvmJab.java, Java2se.java, Pager.java
W meConnector.java wywalasz 60 linie

    StringBuffer connectorStringBuffer = new StringBuffer( "socket://" );
    connectorStringBuffer.append( hostname );
    connectorStringBuffer.append( ":" );
    connectorStringBuffer.append( port );
    //connectorStringBuffer.append( "/" );

Natomiast w Java2me.java ustawiasz gdzie i jako kto ma się łączyć

Myślę, że dalej sobie poradzisz. Przetestowałem to u siebie (bez szyfrowania). Działa.

0

Czy w netbeans można jakoś dodać te źródła za jednym zamachem, czy trzeba dodawać ręcznie?

0

Pytasz poważnie?

Możesz sobie po prostu skopiować katalog com z source.zip do katalogu src twojego projektu, albo jeszcze lepiej zrobić nowy projekt i tam władować ten com, a do twojego projekty dodać tylko jar-a.

Poza tym pierwsza pozycja we właściwościach projektu to Sources i tam masz Add Folder

0

Nie, po prostu myślałem, ze trzeba to zrobić w jakiś inny sposób. Dołączyłem jara do mojego projektu i zaczynam testy. Dzięki za pomoc. Jak będę miał jakieś problemy to odezwę się :).

A działa u Ciebie wysyłanie wiadomości, bo u mnie coś nie bardzo, robię wszystko na bazie tego pliku java2me i dokumentacji, połączenie z serwerem aqq.eu i logowanie nie rzucają żadnych wyjątków, dioda połączenie internetowego na emulatorze się świeci ale wiadomości wysłać nie mogę dostaję nullPointerException.

0

możesz mi przesłać ten twój testowy program?

0

U mnie wszystko działało zarówno wysyłanie jak i odbieranie, ale testowałem to tylko na połączeniu NIE szyfrowanym. Napisz konkretnie z czym masz problem, bo ja sam program już dawno wywaliłem. Ostatecznie jak będę miał chwile mogę Ci coś wyklikać bo to ograniczało się gdzieś do 10 linijek kodu.

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