Johdatus Socket-ohjelmointiin Pythonissa

Pistorasio-ohjelmoinnissa viestintä muodostetaan verkon kautta kahden pistorasian (solmujen) välillä. Palvelin toimii kuunteluporttina, joka kuuntelee tiettyä IP: tä ja asiakasliitäntä ulottuu palvelinliitäntään kommunikointia varten. Jotta voisimme työskennellä pistorasioiden ohjelmoinnissa, meidän on tuotava pythonin tarjoama pistorasiakirjasto.

Python Socket Server

Pistorasia on päätepiste datan lähettämiseen tai vastaanottamiseen, joten tarvitsemme palvelinta ja asiakaspistorasio-ohjelmaa tätä tarkoitusta varten. Esimerkkiohjelmassamme isännöimme palvelinta ja asiakasta samassa koneessa. Voimme jopa lähettää ja vastaanottaa palvelinkoodin kautta. On huomattava, että meillä voi olla vain yksi palvelinohjelma, kun taas meillä voi olla useita asiakasohjelmia.

Transmission Control Protocol (TCP) on valittu oletusprotokolla. TCP on luotettava, koska lähettäjä havaitsee ja siirtää verkossa pudotetut paketit. TCP tarjoaa myös tilauksen mukaiset tietojen toimitukset, ts. Järjestyksen, jossa lähettäjä lähettää sen samassa järjestyksessä kuin sovellus lukee.

server.py

Katso alla olevaa ohjelmaa: server.py

Rivi 3: Socket on esiasennettu kirjasto, ja objekti luodaan sitä varten. Tämä pistorasiamoduuli tuodaan python-ohjelmaan, ja sitä käytetään myöhemmin pistorasiatoiminnona. Luomme tälle objektin, joka kutsuu socket-toimintoa.

Rivi 4: socket.AF_INET vastaa IPV4: tä (jos halutaan käyttää IPV6: ta, niin socket.AF_INET6: ta voidaan käyttää. Tämä viittaa socket-perheeseen. AF_INET määrittelee viestinnässä käytettävän protokollan. IPV4 ja IPV6 ovat erilaiset lähetysohjeet tapoja tai protokollia tiedon siirtämiseksi verkon kautta.

IPV4 ja IPV6 ovat vain erityyppisiä IP-osoitteita. Socket.AF_INET vastaa TCP: tä. TCP (Transmission Control Protocol) toimii yhdessä IP: n kanssa ja määrittelee kuinka tietokone lähettää datapaketit toisilleen.

Seuraavaksi tarvitaan TCP, jotta tarvitsemme socket.SOCK_STREAM, joka on socket type. TCP on yhteyskeskeinen protokolla, joka sisältää olennaisesti kolmitieyhteyden suorittamisen palvelimen ja asiakkaan kanssa. Sitten annamme isäntänimen, johon asiakas muodostaa yhteyden.

Rivi 5: Isäntänimessä voidaan käyttää joko ”localhost” tai “127.0.01” tai socket.gethostname (). Se saa palvelimen IP-osoitteen.

Yllä olevat ovat kaksi parametria, jotka määrittelemme pistorasialle.

Rivi 6: Järjestelmässämme on yleensä paljon portteja, joten meidän on käytettävä käyttämätöntä isäntäporttia. Mitä tahansa nelinumeroista voidaan käyttää, koska enimmäkseen alemmat numerot ovat varattuja.

Rivi 7: bind () -menetelmä, joka sitoo isännän ja portin pistorasiaan.

Kaikki nämä vaiheet ovat tarpeen palvelimemme käynnistämiseksi. Nyt meidän on tehtävä asiakas. Kuten aiemmin mainittiin, meillä voi olla useita asiakkaita.

Rivi 8: Meillä on mahdollisuus mainita sen asiakkaan numero, joka voi olla vuorovaikutuksessa palvelimen kanssa. Tämä saavutetaan s.listen (6): lla. Se käynnistää TCP-kuuntelijan. Numero edustaa asiakkaiden määrää, jotka voivat olla vuorovaikutuksessa. Jos esimerkiksi seitsemäs asiakas tulee, se hylätään.

Rivi 9: s.accept () hyväksyy pyynnön asiakkaalta ja palauttaa kaksi objektia, joista toinen on socket-client-objekti ja toinen on osoite. IP-osoite on sen asiakkaan osoite, jossa asiakasmme on läsnä.

Rivi 10: Tämä on enemmän kuin ilmoitus palvelimelle luodusta yhteydestä.

Viimeiseksi tulostamme lausunnon, joka tulisi näyttää, kun molemmat ohjelmat ovat käynnissä terminaalissa. Kun olemme valmistuneet palvelinohjelmamme kanssa, kirjoitamme asiakasohjelman.

Python Socket Client

Tässä keskustellaan python-socket-asiakasohjelmasta:

client.py

Tässä on asiakasohjelmamme: client.py

Asiakasohjelmalla on myös samanlainen pistorasia, kuten näemme palvelinohjelman tapauksessa. Yleensä asiakasohjelma ajaa palvelinohjelmasta. Se ei ole samassa koneessa kuin me tässä tässä esimerkissä. Pistorasioiden avulla aiomme saavuttaa kommunikoinnin Python-ohjelmien kautta paikallisesti verkkoon kytketyllä koneella tai jopa etäverkkoon kytketyillä koneilla.

Rivi 8: Palvelinohjelmassa on sidonta () -menetelmä, tässä käytetään yhdistämismenetelmää (). Tässä oleva tupla vie isännän ja portin menetelmässä. Otamme saman portin kuin olimme käyttäneet server.py-palvelussa

Meidän on suoritettava server.py ja client.py eri päätelaitteissa ja näin näemme yhteyden tapahtuvan.

lähtö:

Kuvakaappaus on kahdesta eri päätteestä, joista toinen avataan CMD: ssä ja toinen PowerShellissä Windowsissa. Vasen ikkuna avaa server.py -ohjelman ja oikealla oleva pääte avaa client.py ohjelman.

Näemme tulosteen tulostuneena palvelinpuolen päätelaitteeseen.

Merkkijonon lähettäminen tiedostosta toiseen

Yritämme lähettää viestin asiakaspuolelta palvelinpuolelle. Me kirjoitamme viestin client.py -ohjelmassa.

1. asiakas.py

Tässä on asiakasohjelmamme: client.py

Rivit 9 ja 10: Asetamme viestin muuttujana ja lähetämme viestin tavujen muodossa ja muuntamme sen tai koodaamme sen UTF-8-muodossa. (UTF on Unicode -standardi, koska viestin kaikki sisällöt ovat merkkejä ja ne kuuluvat Unicode-kaavion alle.) Meidän on tarkoitus koodata ja pitää tiedot mahdollisimman pieninä, muuten lähetys epäonnistuu jossain vaiheessa.

Rivi 11: Suljemme yhteyden.

Palvelinohjelmassa teemme seuraavat muutokset.

2. palvelin.py

Tässä on palvelimelle tarkoitettu ohjelma: server.py

Rivi 11: Yhteyden luomiseksi käytämme socket-asiakasobjektia. Mainitsemme puskurin koon lisäämällä menetelmään 1024 tavua (1 kt) ja pidämme muuttujan viestissä.

Rivi 13: Tulostamme sitten menetelmän.

lähtö:

Avaamme molemmat päätteet uudelleen ja näemme seuraavan tuloksen.

Johtopäätös - Socket-ohjelmointi Pythonissa

Pistorasioiden ohjelmoinnin perusteet on käsitelty tässä, mutta on huomattava, että kyseessä on massiivinen alue ja pistorasioiden ohjelmoinnissa on paljon muita asioita. Perustietojen ymmärtäminen auttaisi käsittelemään monimutkaisia ​​asiakas-palvelin-skenaarioita.

Suositellut artikkelit

Tämä on opas Socket -ohjelmointiin Pythonissa. Tässä keskustellaan python-socket-palvelimen ja python-socket-asiakkaan käsitteestä koodin toteutuksella. Voit myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -

  1. Python Nested Loops
  2. Pythonin 15 parasta ominaisuutta
  3. 7 parasta Python IDE -sovellusta Windowsille
  4. Erilaiset menetelmät Python-sarjoissa