Ez egy egyszerű Python-alapú szerver-kliens chat alkalmazás, amely hálózati kommunikációt valósít meg ugyanazon alhálón belül. A projekt célja, hogy a diákok megismerkedjenek az alapvető hálózati programozási koncepciókkal, mint például a socketek és több szálú folyamatok használata.
- Több kliens egyidejű kiszolgálása.
- Kliens azonosító megadása.
- Privát üzenetek küldése az azonosítók alapján.
- Minden kliensnek szóló üzenetek küldése.
- Egyszerű grafikus felhasználói felület (GUI) támogatása a Tkinter segítségével.
A szerver kódja a szerver.py
. Futtatásához:
python szerver.py
- A szerver alapértelmezett IP-címe:
0.0.0.0
(minden interfész figyelése). - Az alapértelmezett port:
12345
. - A szerver terminálján megjelennek a csatlakozó kliensek és az üzenetküldések részletei.
A kliens kétféleképpen indítható:
A terminálos kliens kódja a kliens.py
. Futtatásához:
python kliens.py
- A futtatás után a kliens megkérdezi az azonosítót.
- Az üzeneteket az alábbi formátumban lehet küldeni:
- Privát üzenet:
SEND:<cél_azonosító>:<üzenet>
- Mindenkinek szóló üzenet:
ALL:<üzenet>
- Privát üzenet:
A grafikus kliens kódja a kliensgui.py
. Futtatásához:
python kliens-gui.py
- A futtatás után a felhasználónak meg kell adnia az azonosítóját.
- A GUI lehetőséget biztosít:
- Címzett kiválasztására (egyedi azonosító vagy „ALL” a broadcast üzenetekhez).
- Üzenetek beírására és küldésére egy gombbal vagy az Enter billentyűvel.
- Fogadott üzenetek megtekintésére egy görgethető szövegmezőben.
- Indítsd el a szervert egy terminálban.
- Indíts két vagy több klienst külön terminálokban vagy GUI-ban.
- Az egyik kliens küldhet üzenetet a másiknak:
SEND:azonosito1:Hello, hogyan vagy?
- Az összes kliensnek szóló üzenet:
ALL:Ez egy üzenet mindenkinek!
- Az alkalmazás csak az azonos alhálón lévő eszközök között működik.
- A szerver és a kliensek közötti kommunikáció TCP-alapú, ezért stabil kapcsolat szükséges.
- A kód oktatási célokra készült, és nem tartalmaz fejlett biztonsági funkciókat.
A szerver fogadja a kliensek kapcsolatait, és egyedi azonosítókat kezel:
kezeles
függvény: Egy-egy kliens kommunikációjának kezelése.- Privát üzenetküldés: Az azonosító alapján a megfelelő kliensnek továbbítja az üzenetet.
- Broadcast: Az összes kliensnek továbbítja az üzenetet, kivéve a küldőt.
A terminálos kliens kapcsolatot létesít a szerverrel, és valós idejű üzenetküldést biztosít:
fogadas
függvény: A szervertől érkező üzenetek kezelése.- Az azonosító bekérése után a felhasználó szabadon küldhet üzeneteket más klienseknek.
A GUI kliens a Tkinter könyvtárat használja az interaktív felület megvalósításához:
- Üzenetek fogadása: A szerverről érkező üzenetek megjelenítése egy görgethető szövegmezőben.
- Üzenetek küldése: Címzett kiválasztása és üzenet beírása után az Enter gombbal vagy küldés gombbal lehet üzenetet küldeni.
- Párhuzamos működés: A fogadási folyamat külön szálon fut, így a GUI zavartalanul használható.
Ez a kód szabadon használható és módosítható oktatási célokra.