Sissejuhatus pistikupesa programmeerimisse Pythonis

Pistikupesa programmeerimisel luuakse side kahe pistikupesa (sõlmede) vahelise võrgu kaudu. Server toimib kuulajaportina, mis kuulab konkreetset IP-d ja kliendi pesa jõuab suhtlemiseks serveri pesasse. Pistikupesade programmeerimisega tegelemiseks peame importima pistikuraamatukogu, mille python pakub.

Pythoni socketiserver

Pistikupesa on andmete saatmise või vastuvõtmise lõpp-punkt, seetõttu vajame selleks serverit ja kliendi pistikupesa programmi. Näidisprogrammi jaoks võõrustame serverit ja klienti samas arvutis. Saame isegi serverikoodi kaudu saata ja vastu võtta. Tuleb märkida, et meil võib olla ainult üks serveriprogramm, samas kui meil võib olla mitu kliendiprogrammi.

Edastamise juhtimisprotokoll (TCP) on valitud vaikimisi protokoll. TCP on usaldusväärne, kuna saatja tuvastab ja edastab võrku langenud paketid. TCP pakub ka tellitud andmete edastamist, st järjekorda, milles saatja need saadab samas järjekorras, nagu rakendus loeb.

server.py

Vaadake allolevat programmi: server.py

3. rida: pistikupesa on eelinstalleeritud teek ja selle jaoks luuakse objekt. See pistikupeamoodul imporditakse python-programmi ja seda kasutatakse hiljem programmis pistikupesa funktsioonina. Loome siin objekti, mis kutsub välja pistikupesa funktsiooni.

4. rida: pesa.AF_INET vastab IPV4-le (kui soovitakse kasutada IPV6-d, siis saab kasutada pistikupesa.AF_INET6. See viitab pistikupesa perekonnale. AF_INET täpsustab suhtluseks kasutatavat protokolli. IPV4 ja IPV6 on erinevad ülekandekontrollid võrgu kaudu andmete edastamise viisid või protokollid.

IPV4 ja IPV6 on lihtsalt erinevat tüüpi IP-aadressid. Pistikupesa.AF_INET vastab TCP-le. Edastuskontrolli protokoll (TCP) töötab koos IP-ga ja määratleb, kuidas arvuti üksteisele andmepakette saadab.

Järgmisena on vaja TCP, selleks vajame pistikupesa.SOCK_STREAM, mis on pistikupesa tüüp. TCP on ühendusele orienteeritud protokoll, mis hõlmab sisuliselt kolmesuunalise käepigistuse ühenduse loomist serveri ja kliendiga. Seejärel pakume hostinime, kuhu klient loob ühenduse.

5. rida: hostinime jaoks saab kasutada mõlemat neist : localhost või 127.0.01 või socket.gethostname (). See saab serveri IP-aadressi.

Ülaltoodud on kaks parameetrit, mille määratleme pistikupesa jaoks.

6. rida: meie süsteemis on tavaliselt palju sadamaid, nii et peame kasutama kasutamata hostporti. Kasutada võib mis tahes neljakohalist, kuna enamasti on hõivatud alumised numbrid.

7. rida: meetod bind (), mis seob host ja pordi pistikupesaga.

Kõik need toimingud on vajalikud meie serveri käivitamiseks. Nüüd peame kliendi tegema. Nagu enne mainitud, võib meil olla mitu klienti.

8. rida: meil on võimalus nimetada kliendi arv, kes saab serveriga suhelda. Selle saavutab s.listen (6). See käivitab TCP kuulaja. Numbriline tähistab klientide arvu, kes saavad suhelda. Näiteks kui tuleb seitsmes klient, siis ta loobutakse.

9. rida: s.accept () võtab vastu kliendi päringu ja tagastab kaks objekti, üks on sokli-kliendi objekt ja teine ​​aadress. IP-aadress on kliendi aadress, kus meie klient asub.

10. rida: see sarnaneb rohkem serverile teatisega loodud ühenduse kohta.

Lõpuks prindime avalduse, mis peaks ilmuma, kui mõlemad programmid terminalis töötavad. Kui oleme oma serveriprogrammiga lõpetanud, kirjutame kliendiprogrammi välja.

Python Socket Client

Siin käsitleme python socket klienti:

klient.py

Siin on meie klientprogramm: klient.py

Kliendiprogrammil on ka sarnane pesa, nagu me näeme serveriprogrammi puhul. Tavaliselt töötab klientprogramm serveriprogrammist. See ei asu samas masinas, nagu meil siin näites on. Pistikupesade abil soovime suhelda Pythoni programmide kaudu kohtvõrguga ühendatud masinas või isegi kaugjuhtimispuldiga ühendatud arvutites.

8. rida: Serveriprogrammis on sidumismeetod (), siin kasutatakse meetodit connect (). Siin olev näpunäide võtab meetodi host ja port. Me kasutame sama porti, mida olime oma server.py-s kasutanud

Peame server.py ja client.py käitama erinevates terminalides ja nii näeme ühenduse teket.

Väljund:

Ekraanipilt on kahest erinevast terminalist, üks on avatud CMD-s ja teine ​​Windowsis PowerShellis. Vasakpoolses aknas avaneb server.py programm ja paremal asuv terminal avab kliendi.py programmi.

Me näeme serveripoolses terminalis trükitud väljundit.

Stringi saatmine ühest failist teise

Proovime saata sõnumi kliendi poolelt serveri poole. Kirjutame sõnumi programmis client.py.

1. klient.py

Siin on meie klientprogramm: klient.py

9. rida ja 10. rida: seadsime sõnumi muutujaks ja saadame sõnumi baitidena ning teisendame selle või kodeerime selle UTF-8 vormingus. (UTF on Unicode'i standard, kuna kogu sõnumi sisu on tähemärki ja need kuuluvad Unicode'i diagrammi alla.) Me peaksime kodeerima ja hoidma andmeid võimalikult väikestena, vastasel juhul edastamine ebaõnnestub mingil ajal.

11. rida: sulgeme ühenduse.

Serveriprogrammis teeme järgmised muudatused.

2. server.py

Siin on meie serveri programm: server.py

11. rida: Ühenduse loomiseks kasutame pistikupesa kliendi objekti. Puhvri suuruse mainimisel lisame meetodile 1024 baiti (1 KB) ja hoiame muutuja sõnumit.

13. rida: siis trükime meetodi.

Väljund:

Avame mõlemad klemmid uuesti ja näeme järgmist väljundit.

Järeldus - pistikupesade programmeerimine Pythonis

Pistikupesade programmeerimise põhitõed on siin käsitletud, kuid tuleb märkida, et see on tohutu valdkond ja pistikupesade programmeerimisel on veel palju asju. Põhitõdede mõistmine aitaks toime tulla keerukate kliendi-serveri stsenaariumidega.

Soovitatavad artiklid

See on juhend Socket Programming kohta Pythonis. Siin käsitleme python socket serveri ja python socket kliendi kontseptsiooni koos koodi rakendamisega. Lisateabe saamiseks võite vaadata ka järgmisi artikleid -

  1. Pythoni pesasilmused
  2. Pythoni 15 parimat funktsiooni
  3. 7 parimat Windowsi Python IDE-d
  4. Erinevad meetodid Pythoni komplektides

Kategooria: