Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kLAN - format przesyłania
Konnekt | Forum > Developerzy > Tworzenie wtyczek
hao
Krótki i powierzchowny opis "protokołu" kLAN:

kLAN działa na identycznej zasadzie co winPopup, przez tzw. MailSloty.
MailSlot kLANa to domyślnie kLAN, ale można go przestawić na dowolny inny w konfiguracji... Przesyłanie danych polega na wysyłaniu zestawów parametrów jako ciągu znaków oddzielanych od siebie znakiem '\0' i zakańczanych podwójnym zerem "\0\0" (podobnie jak w WinPopup właśnie...")
Format pojedynczego pakietu to (\0 oznacza rozdzielający parametry znak \0):
CODE

<ID>\0<Od>\0<Do>\0<Komenda>\0<<nty Parametr>\0>

Gdzie:
ID - identyfikator pakietu... Trzeba sprawdzać, czy pakietu nie przychodzą zdublowane (wysyłane są przez system przez kilka protokołów i mogą dojść w kilku kopiach)
Od - nazwa hosta nadawcy
Do - nazwa hosta odbiorcy
Komenda - tekstowa nazwa komendy
parametr - dodatkowe parametry specyficzne dla komend... Również oddzielane znakiem '\0'

Komendy (razem z dodatkowymi parametrami):
STATUS <status> <wersja> <opis>
zmiana statusu. Wersja oznacza wersję kLANa (numerycznie). Status to numerek odpowiadającym statusom w Konnekcie (wg SDK wersji 18.x).
GETSTATUS
prośba o wysłanie statusu...
PING
żądanie PONG
PONG
odpowiedź na PING
MESSAGE <id> <treść> <czas_time_t:HEX>
wiadomość. ID to identyfikator wiadomości (numerycznie). Czas to czas wysłania wiadomości jako time (z CRT) hexem
MESSAGEACK <id>
potwierdzenie odebrania wiadomości o identyfikatorze ID
SEARCH <id> [<imie> <nazwisko> <nick> <kom> <email> <K/M> <ur. min> <ur.max>]
żądanie SEARCHREPLY. Parametry po ID są opcjonalne (żeby podać np. sam nick, trzeba też wysłać puste wszystkie wcześniejsze pola). ID powinno być liczbą > 0. Przy czym dla wyszukiwania z parametrami powinno być również większe od 2.
SEARCHREPLY <id> <display> <imie> <nazwisko> <nick> <kom> <email>
Odpowiedź na SEARCH (z parametrem ID tym samym, który przyszedł w SEARCH). Można też wysłać np. po aktualizacji swoich danych osobowych z ID = 0 (klient może wtedy zaktualizować kontakt na swojej liście, ale nie musi)

Dodatkowo kTransfer przesyła i odbiera:
KTRANSFER_DCC <ip> <port>
MastaBlasta
Powiedz mi jeszcze taką, rzecz. Jaki jest format ID mesgów?
MESSAGE <id> <treść> <czas_time_t:HEX>


Jest to jakiś dowolny numerek czy jakoś specyficznie 'sklejany'?


pozdrawiam
hao
liczba... byle unikalna i najlepiej rosnąca...
MastaBlasta
Co jaki czas wysyłany jest PING?
hao
MastaBlasta - w tej chwili w ogóle nie jest wysyłany... Ale kLAN gotowy jest go obsłużyć...
MastaBlasta
Hmm, to w takim razie status musi być wysyłany co jakiś czas, tak? W jaki sposób są obsługiwane statusy kontaktów na liscie? Wysyłany jest co jakiś czas status, czy najpierw żądanie statusu i każdy kontakt na liście ma odpowiedzieć? W takim razie co jaki czas jest wysyłany GetStatus? A co się dzieje w przypadku gdy wyłaczam plugin i mam 'zniknąć' ? Wysyłany jest jeszcze status o niedostępnym czy aby był a zmiana stausu w takim przypadku u innych, którzy mnie mają na liście kontaktów stan się zmieni dopiero po GetStatus?
Mógłbys mi to opisać?


pozdr
Olórin
ja protokolu nie znam, ale wydaje mi sie ze GetStatus wysylany jest przy starcie wtyczki, a przy wylaczaniu jest wysylana zmiana statusu na 0(niedostepny)
hao
Uruchamiamy, rozsyłamy GetStatus (pobierając aktualne statusy na sieci), rozsyłamy nasz status, żeby i inni nas zobaczyli...

Wyłączamy, wysyłamy nasz status (niedostępny)...

koniec...

Ogólnie nasłuchujemy tylko zmian statusu... Po wysłaniu GetStatus nie czekamy aż wszyscy odpowiedzą, zajmujemy się innymi rzeczami... Statusy będą spływać same...
Żeby nie zostawały kontakty online, które rozłączyły się nie wysyłając statusu offline (pad programu, łącza, cokolwiek) możemy zaimplementować obsługę pingowania... Sposób realizacji zależy od autora... kLAN odpowiada pongiem na ping, ale sam jako taki pingów nie wysyła (tak tak... część kontaktów na Waszych listach może być już dawno offline wink.gif )
Olórin
hao-co to ma znaczyc? w protokole przewidziales opisy, wtyczka uwzględnia je w komunikacie "zmieni status"(kpilot mi opis na lanie ustawia) a nie jest wyprowadzony do ui smile.gif chyba tego do oddzielnej wtyki dodawal nie bede?
case
QUOTE(Olórin)
hao-co to ma znaczyc? w protokole przewidziales opisy, wtyczka uwzględnia je w komunikacie \"zmieni status\"(kpilot mi opis na lanie ustawia) a nie jest wyprowadzony do ui smile.gif chyba tego do oddzielnej wtyki dodawal nie bede?

heh, zwlaszzca, ze kiedys hao pisal:
QUOTE(hao)
QUOTE
da rade zeby kLAN obslugiwal statusy opisowe??

No BA! Pewnie że da rade smile.gif Już mi się nie chciało tego wprowadzać po prostu :]

:wink:
hao
w 0.19 UI załatwia sprawę smile.gif
n4p1
Moglby ktos napisac jak dokladnie wyglada wysylany string np. wysylajacy wiadomosc? Jakis przyklad z zycia wziety... Staram sie zrobic wtyczke obslugi rozmow przez lan do jednego z komuinikatorow i skoro jest juz protokol ktorego uzywaja konnekt i tlen, milo by bylo zachowac "kompatybilnosc". Samo wysylanie do mailslotow mam juz opracowane, wysylam sam sobie string tak jak jest opisany w pierwszym poscie, ale cos do konnekta wiadomosc nie dochodzi sad.gif.
Z gory dzieki za przyklad.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2012 Invision Power Services, Inc.