Powrót na stronę UNIX

Tematyka zadania: gniazda lokalne
Rodzaj sprawdzania: na zajęciach
Czas pisania: 70 minut
Sprawdzający: Marcin Borkowski i Paweł Rzążewski
Autor Zadania: Jan Stępień

Traker sieć MiNIBitTorrent na gniazdach lokalnych. Istnieją trzy typy programów: klient, tracker oraz peer.

Peer udostępnia pliki klientom. Po uruchomieniu podłącza się do trackera i rejestruje się u niego wysyłając:

Przykładowa wiadomość od peera do trackera:


  Byte   0   1   2   3   4   5   6   7   8   9  10  11  12
  Value  'r' 'g' 's' 't' 'r' 7  'g' 'n' 'i' 'a' 'z' 'd' 'o'

Klient podłącza się do trackera i wysyła ciąg 5 bajtów "peers". W odpowiedzi otrzymuje dane o peerach, które aktualnie udostępniają fragmenty pewnego pliku, w następującej postaci:

Przykładwa odpowiedź od trackera:


  Byte   0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16
  Value  0  15   7  'g' 'n' 'i' 'a' 'z' 'd' 'o'  6  's' 'o' 'c' 'k' 'e' 't'

Tracker zwraca klientowi nie więcej niż 10 nazw socketów peerów.

Celem zadania jest napisanie trackera i tylko trackera. Binarna wersja pozostałych 2 programów wraz z plikiem restowym będzie dostępna chwilę po rozpoczęciu zajęć w katalogu /home2/samba/borkowskim/unix/.

Mimo że komunikacja między procesami odbywa się na gniazdach lokalnych, peer, klient oraz tracker wysyłają i odbierają liczby dłuższe od 1 bajta kodowane w network byte order.

Tracker przyjmuje jeden parametr: nazwę gniazda, na którym będzie nasłuchiwał. Przy wywołaniu z błędną liczbą argumentów program powinien się zakończyć z kodem błędu wypisując USAGE.

Powrót na stronę UNIX