15 linijek kodu i... P2P

Jak prosty może być program do wymiany plików w sieci P2P? Okazuje się że wystarczy 15 linii kodu. Przykładem jest TinyP2P, program napisany w języku Python przez Eda Feltena i Alexa Haldermana.

Program ten został napisany tylko w celu zademonstrowania, jak prosta może być taka aplikacja. Cały jej kod to 15 linijek, nie dłuższych niż 80 znaków.

15 linijek kodu i... P2P

Kompletny kod programu TinyP2P

Program tworzy małą sieć użytkowników, którzy mogą sobie udostępniać pliki. Sieć taka jest zabezpieczona tylko i wyłącznie hasłem, więc nie jest bardzo bezpieczna. Używane są znane protokoły: HTTP oraz XML-RPC używane przez serwisy webowe. Program może zostać uruchomiony w dwóch trybach: jako serwer i oczywiście jako klient.

Kiedy uruchomimy go w trybie serwera, program łączy się z innymi serwerami w sieci i udostępnia wszystkie pliki znajdujące się w aktualnym katalogu, stają się one automatycznie dostępne dla innych użytkowników sieci. Aby uruchomić program w tym trybie należy wpisać komendę:

python tinyp2p.py hasło server nazwahosta port [inneurl]

gdzie:

- hasło - hasło dla danej sieci;

- nazwahosta i port posłużą do zbudowania adresu URL (http://nazwahosta:port), na którym serwer będzie nasłuchiwał połączeń przychodzących;

- inneurl (opcjonalnie) - określa adres innego serwera działającego w sieci, do którego nasz serwer ma się podłączyć. Jeżeli tego parametru nie podamy, serwer założy nową sieć.

Chcąc natomiast uruchomić klienta wpisujemy komendę:

python tinyp2p.py hasło client serwerurl wzór

gdzie:

- hasło - hasło dla danej sieci;

- serwerurl - jest to adres serwera należącego do sieci;

- wzór - klient po podłączeniu do sieci szuka wśród udostępnionych plików takich, których nazwy zawierają wzór, lub ściślej wzór jest wyrażeniem regularnym Pythona, z którym są porównywane nazwy plików w sieci.

Warto zauważyć, że można uruchomić zarówno serwer, jak i klienta w tym samym katalogu. Spowoduje to, że pliki pobrane przez klienta, są automatycznie udostępniane w sieci przez serwer. Możliwe jest też uruchomienie wielu serwerów, należących do różnych sieci, w tym samym katalogu.

Program można pobrać tutaj.

Więcej informacji o TinyP2P.