Bevezetés a Socket Programozásba a Pythonban

A foglalatos programozás során a kommunikáció a két aljzat (csomópontok) közötti hálózaton keresztül jön létre. A szerver figyelő portként működik, amely egy adott IP-t hallgat, és az ügyfélcsatlakozás eljut a kommunikációs szervercsatlakozóhoz. Annak érdekében, hogy a socket programozásban dolgozzon, be kell importálnunk azt a socket könyvtárat, amelyet a python nyújt.

Python Socket Server

A foglalat végpont az adatok küldésére vagy fogadására, ezért erre a célra kiszolgálóra és kliens socket programra van szükségünk. Példaprogramunkhoz ugyanazon a gépen fogunk tárolni a szervert és az ügyfelet. Még szerverkódon keresztül is küldhetünk és fogadhatunk. Meg kell jegyezni, hogy csak egy szerverprogram lehet, míg több kliensprogramunk is lehet.

A kiválasztott alapértelmezett protokoll a Transmission Control Protocol (TCP). A TCP megbízható, mivel a hálózatban leesett csomagokat a feladó érzékeli és továbbítja. A TCP biztosítja a megrendelés szerinti adatszolgáltatást is, azaz azt a sorrendet, amelyben a feladó elküldi azt hasonló sorrendben, ahogyan az alkalmazás elolvassa.

server.py

Vessen egy pillantást az alábbi programra: server.py

3. sor: A socket egy előre telepített könyvtár, és ehhez egy objektum kerül létrehozásra. Ezt a socket modult a python programba importálják, és később socket funkcióként fogják használni a programban. Itt készítünk egy objektumot, amely socket funkciót fog hívni.

4. sor: a socket.AF_INET megfelel az IPV4-nek (Ha valaki IPV6-ot akar használni, akkor a socket.AF_INET6 használható. Ez a socket családra vonatkozik. Az AF_INET meghatározza a kommunikációhoz használt protokollt. Az IPV4 és az IPV6 különféle átviteli vezérlések az adatok hálózaton keresztüli továbbításának módjai vagy protokolljai.

Az IPV4 és az IPV6 csak különféle IP-címek. A socket.AF_INET megfelel a TCP-nek. A Transmission Control Protocol (TCP) együtt működik az IP-vel, és meghatározza, hogy a számítógép hogyan küldje el adatcsomagokat egymásnak.

Ezután a TCP-re szükség van egy socket.SOCK_STREAM-ra, amely a socket típus. A TCP kapcsolatorientált protokoll, amely lényegében háromutas kézfogás-kapcsolat végrehajtását jelenti egy kiszolgálóval és egy ügyféllel. Ezután megadunk egy hostnevet, amelyhez az ügyfél csatlakozni fog.

5. sor: A gazdagépnévhez a következők bármelyikét használhatjuk : „localhost” vagy „127.0.01”, vagy a socket.gethostname (). Megkapja a szerver IP-címét.

A fenti két paramétert definiáljuk a foglalat számára.

6. sor: Rendszerünkben sok port található, tehát nem használt host portot kell használnunk. Bármely négy számjegy használható, mivel az alsó számjegy általában el van foglalva.

7. sor: A bind () módszer, amely a gazdagépet és a portot egy aljzathoz köti.

Mindezen lépések szükségesek a szerver indításához. Most el kell készítenünk az ügyfelet. Mint már említettük, több ügyfelünk is lehet.

8. sor: Lehetőség van megemlíteni az ügyfél számát, aki kapcsolatba léphet a szerverrel. Ezt az s.listen (6) valósítja meg. Elindítja a TCP figyelőt. A numerikus jelöli az ügyfelek számát, amelyek kölcsönhatásba léphetnek. Ha például a 7. kliens jön, akkor lemond.

9. sor: Az s.accept () elfogadja a kérést az ügyféltől, és két objektumot ad vissza, az egyik a socket-kliens objektum, a másik a cím. Az IP-cím az ügyfél címe, ahol ügyfelünk jelen van.

10. sor: Ez inkább egy szervernek szóló értesítés, mint a létrehozott kapcsolat.

Végül kinyomtatunk egy nyilatkozatot, amelyet akkor kell megjeleníteni, ha mindkét program fut a terminálon. Miután elvégeztük a szerverprogramunkat, kiírjuk az ügyfélprogramot.

Python Socket kliens

Itt beszélünk a python socket kliensről:

client.py

Itt van az ügyfélprogramunk: client.py

Az ügyfélprogramnak hasonló aljzata van, mint a szerverprogram esetében. Az ügyfélprogram általában a kiszolgáló programról indul. Nem ugyanazon a gépen van, mint a jelen példában. A foglalatokkal a Python programokon keresztül kommunikálunk egy helyi hálózatra csatlakoztatott gépen vagy akár távolról hálózatba kapcsolt gépeken.

8. sor: Van egy kötelező () módszer a kiszolgáló programban, itt a connect () metódust fogjuk használni. Az itt szereplő parancs gazdagépet és portot vesz a módszerhez. Ugyanazt a portot vesszük fel, mint amit a server.py-ben használtunk

A server.py-t és a client.py-t különféle terminálokon kell futtatnunk, és így láthatjuk a kapcsolat létrejöttét.

Kimenet:

A képernyőképe két különböző terminálból származik, amelyek közül az egyik CMD-ben, a másik pedig a Windows PowerShell-ben található. A bal oldali ablakban megnyílik a server.py program, a jobb oldalon pedig a client.py program.

Látjuk, hogy a kimenet nyomtatva van a szerver oldali terminálon.

Karakterlánc küldése az egyik fájlból a másikba

Megpróbálunk üzenetet küldeni az ügyféloldalról a szerveroldalra. Írunk üzenetet a client.py programban.

1. kliens.py

Itt van az ügyfélprogramunk: client.py

9. és 10. sor: Az üzenetet egy változóban állítjuk be, bájt formában küldjük el, konvertáljuk vagy kódoljuk UTF-8 formátumban. (Az UTF egy Unicode szabvány, mivel az üzenet minden tartalma karakter és az Unicode diagram alá tartozik.) Feltételezzük, hogy az adatokat minél kisebbre kódolja és megőrizze, amennyire csak lehetséges, különben az átvitel valamikor meghiúsul.

11. sor: Zárjuk le a kapcsolatot.

A szerverprogramban az alábbi változtatásokat hajtjuk végre.

2. server.py

Itt van a szerverre vonatkozó programunk: server.py

11. sor: A kapcsolat kiépítéséhez socket kliens objektumot használunk. A puffer méretét 1024 bájt (1 KB) hozzáadásával a módszerhez említjük, és a változó üzenetben tartjuk.

13. sor: Akkor kinyomtatjuk a módszert.

Kimenet:

Újra kinyitjuk mindkét csatlakozót, és láthatjuk a következő kimenetet.

Következtetés - Socket programozás Pythonban

A socket programozás alapjait itt tárgyaltuk, de meg kell jegyezni, hogy ez egy hatalmas terület, és még sok más dolgot kell bevonni a socket programozásába. Az alapok jó megértése elősegítené a komplex kliens-szerver forgatókönyvek kezelését.

Ajánlott cikkek

Ez egy útmutató a Socket Programozáshoz Pythonban. Itt tárgyaljuk a python socket szerver és a python socket kliens koncepcióját a kód megvalósításával. A következő cikkeket is megnézheti további információkért -

  1. Python beágyazott hurkok
  2. A Python 15 legnépszerűbb szolgáltatása
  3. A Windows 7 legfontosabb Python IDE
  4. Különböző módszerek a Python-készletekben

Kategória: