Ky projekt eshte nje shembull i nje serveri TCP me kliente admin dhe read-only dhe nje HTTP per monitorim dhe statistika.
Qellimi i ketij projekti eshte me ndertu nje sistem klient-server per menaxhimin e files permes TCP sockets ne Python, ku perdoruesit mund te komunikojne me serverin ne distance dhe te kryejne operacione mbi file.
Ky projekt eshte i dizajnuar kryesisht per mesim dhe praktike te koncepteve te meposhtme:
Komunikimi Client–Server me TCP Programimi me threads (multi-client handling) Ndertimi i nje protokolli te thjeshte komunikimi (JSON messages) Menaxhimi i role-based access (Admin / Readonly) Operacione mbi skedare ne server (upload, download, delete, read) Trajtimi i requests dhe responses ne kohe reale
Hape CMD ose Terminal. Sigurohuni qe python eshte i instaluar:
python --version
Clone the repo:
https://github.com/sarakycyku/programming_with_sockets.git
- Nis serverin:
python run_server.py - Nis klientin admin:
python run_admin.py - Nis klientin readonly:
python run_readonly.py
| Komanda | Përshkrimi |
|---|---|
/list |
Liston files në server |
/read <file> |
Lexon permbajtjen e file |
/upload <file> |
Ngarkon skedar ne server |
/download <file> |
Shkarkon file nga serveri |
/delete <file> |
Fshin file nga serveri |
/search <keyword> |
Kerkon fjale ne file |
/info <file> |
Tregon informacione per file |
/help |
Shfaq ndihmen |
/quit |
Dil nga klienti |
| Komanda | Përshkrimi |
|---|---|
/list |
Liston files |
/read <file> |
Lexon fies |
/download <file> |
Shkarkon file nga serveri |
/search <keyword> |
Kerkon fjale ne skedare |
/info <file> |
Tregon informacione |
/help |
Ndihme |
/quit |
Dil |
Nuk lejohen: /upload, /delete
Hap ne browser: http://<IP_ADRESA>:9080/stats
Aty mund te shihni:
- klientet aktiv
- requests (komanda dhe mesazhe)
- aktivitetin ne kohe reale
- rolet e klienteve
Maksimumi 4 kliente gjithsej Maksimumi 3 kliente readonly Admin nuk ka kufizim komandash Timeout: 120 sekonda pasivitet
Klienti lidhet me serverin (IP + port ) Dergon automatikisht auth me token Serveri verifikon token-in Serveri cakton rolin (admin ose readonly) Klienti pranohet nese ka vend Komunikimi vazhdon përmes TCP requests/replies
python run_server.py
python run_admin.py
/list /read sample.txt
python run_readonly.py
Pershendetje server!
Hape:
client/config.py
SERVER_HOST = "192.168.1.x"
SERVER_PORT = 9000 Gjate perdorimit te ketij sistemi, klienti duhet me qene i kujdesshem ne disa pika te rendesishme per me shmang probleme dhe gabime gjate komunikimit me serverin:
Nese token-i nuk eshte i sakte, serveri nuk te pranon dhe lidhja deshton.
Nese SERVER_HOST eshte gabim, klienti nuk mund te lidhet me serverin.
Nese klienti nuk dergon asnje veprim per 120 sekonda, serveri mund ta shkepuse automatikisht.
Readonly klienti nuk guxon me perdor komanda si /upload ose /delete, sepse serveri i refuzon.
Gabime ne shkrimin e komandave (p.sh. /readd ne vend te /read) rezultojne me error.
Mbyllja pa /quit mund me shkaktu disconnect jo të paster dhe gabime ne server.