Introduktion till Socket-programmering i Python

Vid sockelprogrammering upprättas kommunikation via ett nätverk mellan två-uttag (noder). Servern fungerar som lyssnarporten som lyssnar på en viss IP och klientuttaget når ut till serveruttaget för kommunikation. För att kunna arbeta med sockelprogrammering måste vi importera det socketbibliotek som Python tillhandahåller.

Python Socket Server

Ett socket är en slutpunkt för att skicka eller ta emot data, därför behöver vi en server och ett klientuttagsprogram för detta ändamål. För vårt exempelprogram kommer vi att vara värd för server och klient på samma maskin. Vi kan till och med skicka och ta emot via en serverkod. Det bör noteras att vi bara kan ha ett serverprogram medan vi kan ha flera klientprogram.

Transmission Control Protocol (TCP) är det standardprotokoll som väljs. TCP är tillförlitligt eftersom paketen som tappas i nätverket detekteras och överförs av avsändaren. TCP tillhandahåller också beställning av datalagring, dvs. den ordning i vilken den skickas av avsändaren i en liknande ordning som den läses av applikationen.

server.py

Titta på programmet nedan: server.py

Rad 3: Socket är ett förinstallerat bibliotek och ett objekt skapas för det. Denna socketmodul importeras i pythonprogrammet och den kommer att användas som en socketfunktion senare i programmet. Vi skapar ett objekt här som kommer att kalla socket-funktionen.

Rad 4: socket.AF_INET motsvarar IPV4 (Om man vill använda IPV6 kan socket.AF_INET6 användas. Detta avser sockelfamiljen. AF_INET anger protokollet som ska användas för kommunikation. IPV4 och IPV6 är olika överföringskontroller sätt eller protokoll för överföring av data via nätverket.

IPV4 och IPV6 är bara olika typer av IP-adresser. Socket.AF_INET motsvarar TCP. Transmission Control Protocol (TCP) fungerar med IP och definierar hur datorn skickar datapaket till varandra.

Nästa som behövs är TCP för det kommer vi att behöva ett uttag.SOCK_STREAM, som är sockeltypen. TCP är ett anslutningsorienterat protokoll, som i huvudsak innebär att utföra en trevägs handskakningsanslutning med en server och en klient. Sedan tillhandahåller vi ett värdnamn där klienten kommer att ansluta.

Rad 5: För värdnamnet, “localhost” eller “127.0.01” eller socket.gethostname () kan någon av dessa användas. Det får serverns IP-adress.

Ovanstående är de två parametrarna som vi definierar för uttaget.

Rad 6: Vi har vanligtvis många portar i vårt system så vi måste använda en värdport som inte används. Vilken som helst fyrsiffrig kan användas eftersom de flesta lägre siffror är upptagna.

Rad 7: Metoden bind () som binder värden och porten till ett uttag.

Alla dessa steg behövs för att starta vår server. Nu måste vi göra klienten. Som nämnts tidigare kan vi ha flera klienter.

Rad 8: Vi har ett alternativ att nämna antalet klienter som kan interagera med servern. Detta uppnås av s.listen (6). Det startar TCP-lyssnaren. Siffran representerar antalet klienter som kan interagera. Om till exempel den sjunde klienten kommer kommer den att släppas.

Rad 9: s.accept () accepterar begäran från klienten och den returnerar två objekt, ett är socket-klientobjektet och det andra är adressen. IP-adressen kommer att vara adressen till den klient där vår klient finns.

Rad 10: Detta är mer som ett meddelande till servern om anslutningen som har upprättats.

Slutligen skriver vi ut ett uttalande som ska visas när båda programmen körs i terminalen. När vi är klar med vårt serverprogram kommer vi att skriva ut klientprogrammet.

Python Socket Client

Här diskuterar vi Python-socket-klienten:

client.py

Här är vårt program för klienten: client.py

Klientprogrammet har också ett liknande uttag, som vi ser när det gäller serverprogrammet. Vanligtvis körs klientprogrammet från serverprogrammet. Det finns inte i samma maskin som vi har i det här exemplet här. Vad vi tänker åstadkomma med uttag är att kommunicera via Python-program på en lokalt nätverksmaskin eller till och med fjärranslutna maskiner.

Rad 8: Det finns en bindande () metod i serverprogrammet, här använder metoden connect (). Tupeln här tar värd och port i metoden. Vi tar samma port som vi använde i vår server.py

Vi måste köra server.py och client.py i olika terminaler och det är så vi ser anslutningen uppstå.

Produktion:

Skärmdumpen är från två olika terminaler, en öppnad i CMD och den andra öppnad i PowerShell i Windows. Det vänstra fönstret öppnar server.py-programmet och terminalen till höger öppnar client.py-programmet.

Vi ser utskriften som skrivs ut på serversidan.

Skicka sträng från en fil till en annan fil

Vi kommer att försöka skicka ett meddelande från klientsidan till serversidan. Vi ska skriva ett meddelande i client.py-programmet.

1. client.py

Här är vårt program för klienten: client.py

Rad 9 och rad 10: Vi ställer in meddelandet i en variabel och skickar meddelandet i form av byte och konverterar det eller kodar det i UTF-8-format. (UTF är en Unicode-standard eftersom allt innehåll i meddelandet är tecken och kommer under Unicode-diagrammet). Vi ska koda och hålla data så små som möjligt, annars skulle överföringen misslyckas någon gång.

Rad 11: Vi stänger anslutningen.

I serverprogrammet kommer vi att göra följande ändringar.

2. server.py

Här är vårt program för servern: server.py

Rad 11: För att bygga anslutningen använder vi socketklientobjekt. Vi nämner buffertstorleken genom att lägga till 1024 byte (1 KB) till metoden och vi behåller variabelmeddelandet.

Rad 13: Sedan skriver vi ut metoden.

Produktion:

Vi öppnar upp båda terminalerna igen och ser följande utgång.

Slutsats - Socket-programmering i Python

Grunderna för sockelprogrammering har täckts här men det måste noteras att det är en massiv domän och det finns många fler saker att täcka i sockelprogrammering. Att förstå grunderna väl skulle hjälpa till att hantera komplexa klientserver-scenarier.

Rekommenderade artiklar

Detta är en guide till Socket-programmering i Python. Här diskuterar vi konceptet python-socket-server och python-socket-klient med kodimplementering. Du kan också titta på följande artiklar för att lära dig mer -

  1. Python Nested Loops
  2. Topp 15 funktioner i Python
  3. Topp 7 Python IDE för Windows
  4. Olika metoder i Python-uppsättningar

Kategori: