Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 2.03.2011 Ostrzeżenie: (0%)
|
Czesc.
Mam dokumentacje protokolu opartego o UDP: http://xbtt.sourceforge.net/udp_tracker_protocol.html ... i nie bardzo wiem jak to ugryzc. Chodzi mi o to, jak mam podac dane. Nie moge uzmyslowic sobie co to jest offset - zakladam, ze jest to n-ty bajt w ciagu ?
Gdyby ktos byl tak mily, i wytlumaczyl mi krok 1 - "obtain connection id" oraz jak odebrane dane przekonwertowac z postaci binarnej do np. tablicy. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 2.03.2011 Ostrzeżenie: (0%)
|
Dzieki, pomoglo.
Pogoooglowalem i ... : 32 bitowa liczba posiada 4 oktety (4*8 = 32). 64 bitowa liczba ma owych oktetów 8 (8*8 = 64). Offset w pakiecie to numer oktetu po ktorym doklejamy kolejne dane. I tak: Kod 0 64-bit integer connection_id 0x41727101980 8 32-bit integer action 0 12 32-bit integer transaction_id 16 (Liczymy od zera, tak jak w tablicach) Od 0 do 7 - osiem oktetow, liczba 64 bitowa 8 - 11 cztery oktety liczby 32 bitowej 12 - 15 kolejne cztery oktety. Dla pozostalych, ktorzy tez poszerzaja wiedze na ten temat - oktet to np: 1001 1001 1001 1001 1001 1001 1001 1001, razem 32 bity. Kazda cyfra w HEX (szesnastkowa, 0 - F) reprezentuje 4 bity. I tak: 1001 = 0x9 a ten dlugi ciag wczesniej: 0x99999999. Mam 32 bitowa wersje PHP wiec 64-bitowa liczba 0x41727101980 (8 znakow - za duzo na 32 bit - max to 8) nie bedzie dzialac, rozdzielam ja wiec na dwie 32-bitowe: 0x417, 0x27101980 (po prostu rozdzielam, nie robie zadnych dzialan matematycznych). Nastepnie pakujemy dane. W specyfikacji pisze, ze liczby sa w formacie big endian (najwazniejszy bajt pierwszy (bajt = 8 bitow (oktet))). Nalezy wziac to pod uwage przy funkcji PACK: Wyjasnienie "N3" - N oznacza, ze pierwszy parametr powinien zostac zakodowany jako: unsigned long (always 32 bit, big endian byte order) "4" oznacza, ze nalezy zastosowac to do 4 kolejnych argumentow zaczynajac od aktualnego. 2 pierwsze argumenty to nasz podzielony, 64 bitowy integer, ktorego moje php nie ogarnia :-) Ok i pozniej lecimy:
... i kupa. fwrite zwraca 16, czyli jest GIT. $fp jest OK - polaczenia nawiazane, var dump z fread natomiast zwraca string o zerowej dlugosci. Nie dostaje zadnej odpowiedzi. Bede dalej probowal, natomiast tych bardziej doswiadczonych prosil bym o ewentualne sugestie. Moze jest cos o czym nie wiem. Wg. dokumentacji powinienem teraz dostac odpowiedz o dlugosci min. 16 bajtow. |
|
|
|
azerty Komunikacja z protokolem UDP 2.03.2011, 16:12:40
Crozin CytatChodzi mi o to, jak mam podac dane.Struktura ... 2.03.2011, 16:37:10
Zyx Nie stworzysz pakietu UDP, bo w UDP nie ma pakietó... 3.03.2011, 16:03:06
Crozin CytatNie stworzysz pakietu UDP, bo w UDP nie ma pa... 3.03.2011, 16:12:23
erix CytatPołączeń nie ma, bo jest to protokół bezstano... 3.03.2011, 23:55:04
azerty No tak. Jak Wy zaczniecie gadac, to dyskusja wedru... 4.03.2011, 01:13:31
Crozin Dochodzi 3:00 więc wybacz za formę i ewentualne bł... 4.03.2011, 03:02:54
azerty Ok. Prawie dziala.
Odpowiedz jaka dostaje:
Cytat... 5.03.2011, 02:15:43 
kiler129 Cytat(azerty @ 5.03.2011, 02:15:43 ) ... 5.03.2011, 02:56:11 
fifi209 Cytat(kiler129 @ 5.03.2011, 02:56:11 ... 5.03.2011, 10:37:47
Crozin CytatIstnieje mozliwosc, ze to zle dzialajaca funk... 5.03.2011, 02:57:18
azerty Mi sie wydaje, ze jednak cos jest nie tak z moim p... 5.03.2011, 04:01:46 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 18:44 |