Introduksjon til Socket-programmering i Python

I socket-programmering etableres kommunikasjon via et nettverk mellom to-socket (noder). Serveren fungerer som lytterporten som lytter på en bestemt IP og klientkontakten når ut til serverkontakten for kommunikasjon. For å jobbe med socket-programmering, må vi importere socket-biblioteket som python gir.

Python Socket Server

En socket er et sluttpunkt for å sende eller motta data, og derfor trenger vi en server og et klientkontaktprogram for dette formålet. For vårt eksempelprogram, vil vi være vertskap for server og klient på samme maskin. Vi kan til og med sende og motta via en serverkode. Det skal bemerkes at vi kan ha bare ett serverprogram mens vi kan ha flere klientprogrammer.

Transmission Control Protocol (TCP) er standardprotokollen som er valgt. TCP er pålitelig ettersom pakkene som slippes i nettverket blir oppdaget og overført av avsenderen. TCP sørger også for levering av ordre i data, dvs. rekkefølgen den sendes av avsenderen i en lignende rekkefølge som den leses av applikasjonen.

server.py

Ta en titt på programmet nedenfor: server.py

Linje 3: Socket er et forhåndsinstallert bibliotek og det opprettes et objekt for det. Denne socket-modulen importeres i python-programmet, og den vil bli brukt som en socket-funksjon senere i programmet. Vi lager et objekt her, som vil kalle socket-funksjonen.

Linje 4: socket.AF_INET tilsvarer IPV4 (Hvis man ønsker å bruke IPV6, så kan socket.AF_INET6 brukes. Dette refererer til socket-familien. AF_INET spesifiserer protokollen som skal brukes for kommunikasjon. IPV4 og IPV6 er forskjellige overføringskontroller måter eller protokoller for overføring av data via nettverket.

IPV4 og IPV6 er bare forskjellige typer IP-adresser. Stikkontakten.AF_INET tilsvarer TCP. Transmission Control Protocol (TCP) fungerer med IP-en og definerer hvordan datamaskinen sender datapakker til hverandre.

Det neste som trengs er TCP for at vi trenger en socket.SOCK_STREAM, som er sokkeltypen. TCP er en tilkoblingsorientert protokoll, som hovedsakelig innebærer å utføre en treveis håndtrykk-tilkobling med en server og en klient. Deretter oppgir vi et vertsnavn der klienten vil koble seg til.

Linje 5: For vertsnavnet kan “localhost” eller “127.0.01” eller socket.gethostname () brukes av en av disse. Den får IP-adressen til serveren.

Ovennevnte er de to parameterne som vi definerer for kontakten.

Linje 6: Vi har vanligvis mange porter i systemet vårt, så vi trenger å benytte oss av en vertshavn som ikke er brukt. Hvilket som helst firesifret kan brukes, da det meste er de nedre sifrene.

Linje 7: Bindemetoden (), som binder verten og porten til en stikkontakt.

Alle disse trinnene er nødvendige for å starte serveren vår. Nå må vi lage klienten. Som nevnt tidligere kan vi ha flere klienter.

Linje 8: Vi har et alternativ til å nevne nummeret på klienten som kan samhandle med serveren. Dette oppnås av s.listen (6). Det starter TCP-lytteren. Det numeriske representerer antall klienter som kan samhandle. Hvis for eksempel den 7. klienten kommer, vil den bli droppet.

Linje 9: s.accept () vil godta forespørselen fra klienten og den returnerer to objekter, det ene er socket-client-objektet og det andre er adressen. IP-adressen vil være adressen til klienten der vår klient er til stede.

Linje 10: Dette er mer som en varsling til serveren om tilkoblingen som er opprettet.

Til slutt skriver vi ut en uttalelse som skal vises når begge programmene kjører i terminalen. Etter at vi er ferdige med serverprogrammet vårt, skriver vi ut klientprogrammet.

Python Socket Client

Her diskuterer vi om python socket client:

client.py

Her er vårt program for klienten: client.py

Klientprogrammet har også en lignende socket, som vi ser for serverprogrammet. Vanligvis kjører klientprogrammet fra serverprogrammet. Den er ikke i samme maskin som vi har i dette eksemplet her. Med stikkontakter er det vi har tenkt å oppnå kommunikasjon via Python-programmer på en lokalt nettverksmaskin eller til og med eksternt nettverk.

Linje 8: Det er en binding () -metode i serverprogrammet, her vil jeg bruke connect () -metoden. Tupelen her vil ta verten og porten i metoden. Vi tar den samme porten som vi hadde brukt i server.py

Vi trenger å kjøre server.py og client.py i forskjellige terminaler, og det er slik vi ser forbindelsen oppstå.

Produksjon:

Skjermdumpen er fra to forskjellige terminaler en åpnet i CMD og den andre åpnet i PowerShell i Windows. Det venstre vinduet åpner server.py-programmet, og terminalen til høyre åpner client.py-programmet.

Vi ser utskriftene skrevet ut på serversiden.

Sende streng fra en fil til en annen fil

Vi vil prøve å sende en melding fra klientsiden til serversiden. Vi skal skrive en melding i client.py-programmet.

1. client.py

Her er vårt program for klienten: client.py

Linje 9 og linje 10: Vi setter meldingen i en variabel og sender meldingen i form av byte og konverterer den eller koder den i UTF-8-format. (UTF er en Unicode-standard da alt innholdet i meldingen er tegn og de kommer inn under Unicode-diagrammet). Vi er ment å kode og holde dataene så små som mulig, ellers vil overføringen mislykkes på et tidspunkt.

Linje 11: Vi lukker forbindelsen.

I serverprogrammet vil vi gjøre følgende endringer.

2. server.py

Her er vårt program for serveren: server.py

Linje 11: For å bygge forbindelsen, bruker vi socket client-objekt. Vi nevner bufferstørrelsen ved å legge til 1024 byte (1 KB) til metoden, og vi holder variabelen meldingen.

Linje 13: Så skriver vi ut metoden.

Produksjon:

Vi åpner begge terminalene igjen og ser følgende utdata.

Konklusjon - Socket-programmering i Python

Det grunnleggende om socket-programmering har blitt dekket her, men det må bemerkes at det er et massivt domene og det er mange flere ting å dekke i socket-programmering. Å forstå det grunnleggende godt vil hjelpe deg med å håndtere komplekse klient-server-scenarier.

Anbefalte artikler

Dette er en guide til Socket-programmering i Python. Her diskuterer vi konseptet python socket server og python socket client med kodeimplementering. Du kan også se på følgende artikler for å lære mer -

  1. Python nestede løkker
  2. Topp 15 funksjoner i Python
  3. Topp 7 Python IDE for Windows
  4. Ulike metoder i Python-sett