Inleiding tot socketprogrammering in Python

Bij socketprogrammering wordt communicatie tot stand gebracht via een netwerk tussen two-socket (knooppunten). De server fungeert als de luisterpoort die naar een bepaald IP-adres luistert en de client-socket reikt naar de server-socket voor communicatie. Om met socketprogrammering te werken, moeten we de socketbibliotheek importeren die python biedt.

Python-socketserver

Een socket is een eindpunt om gegevens te verzenden of te ontvangen. Daarom hebben we hiervoor een server en een client-socketprogramma nodig. Voor ons voorbeeldprogramma hosten we server en client op dezelfde machine. We kunnen zelfs verzenden en ontvangen via een servercode. Opgemerkt moet worden dat we slechts één serverprogramma kunnen hebben, terwijl we meerdere clientprogramma's kunnen hebben.

Transmission Control Protocol (TCP) is het standaardprotocol dat wordt gekozen. TCP is betrouwbaar omdat de pakketten die in het netwerk vallen, worden gedetecteerd en verzonden door de afzender. TCP biedt ook in-order gegevensaflevering, dwz de volgorde waarin het door de afzender wordt verzonden in een vergelijkbare volgorde als het door de toepassing wordt gelezen.

server.py

Bekijk het onderstaande programma: server.py

Regel 3: Socket is een vooraf geïnstalleerde bibliotheek en daarvoor wordt een object gemaakt. Deze socketmodule wordt geïmporteerd in het python-programma en zal later in het programma worden gebruikt als socketfunctie. We maken hier een object dat de socketfunctie aanroept.

Lijn 4: socket.AF_INET komt overeen met IPV4 (als men IPV6 wenst te gebruiken, dan kan socket.AF_INET6 worden gebruikt. Dit verwijst naar de socketfamilie. AF_INET specificeert het protocol dat zal worden gebruikt voor communicatie. IPV4 en IPV6 zijn verschillende transmissiecontrole manieren of protocollen voor het verzenden van gegevens via het netwerk.

IPV4 en IPV6 zijn gewoon verschillende soorten IP-adressen. De socket.AF_INET komt overeen met TCP. Transmission Control Protocol (TCP) werkt met het IP en definieert hoe de computer datapakketten naar elkaar verzendt.

Vervolgens is TCP nodig, daarvoor hebben we een socket nodig.SOCK_STREAM, het type socket. TCP is een verbindingsgericht protocol, waarbij in wezen een drieweg-handshake-verbinding met een server en een client wordt uitgevoerd. Vervolgens geven we een hostnaam waarmee de client verbinding maakt.

Regel 5: Voor de hostnaam kunnen “localhost” of “127.0.01” of socket.gethostname () elk van deze worden gebruikt. Het krijgt het IP-adres van de server.

De bovenstaande zijn de twee parameters die we definiëren voor de socket.

Regel 6: We hebben meestal veel poorten in ons systeem, dus we moeten gebruik maken van een niet-gebruikte hostpoort. Elk viercijferig getal kan worden gebruikt omdat de onderste cijfers meestal bezet zijn.

Regel 7: De methode bind (), die de host en de poort verbindt met een socket.

Al deze stappen zijn nodig om onze server te starten. Nu moeten we de klant maken. Zoals eerder vermeld kunnen we meerdere klanten hebben.

Regel 8: We hebben een optie om het nummer van de client te vermelden die met de server kan communiceren. Dit wordt bereikt door s.listen (6). Het start de TCP-luisteraar. Het cijfer vertegenwoordigt het aantal clients dat kan communiceren. Als de 7e client bijvoorbeeld komt, wordt deze verwijderd.

Regel 9: s.accept () accepteert het verzoek van de client en retourneert twee objecten, één is het socket-clientobject en de andere is het adres. Het IP-adres is het adres van de klant waar onze klant aanwezig is.

Regel 10: dit lijkt meer op een melding aan de server over de tot stand gebrachte verbinding.

Ten slotte drukken we een verklaring af die moet worden weergegeven wanneer beide programma's in de terminal worden uitgevoerd. Nadat we klaar zijn met ons serverprogramma, schrijven we het clientprogramma uit.

Python Socket-client

Hier bespreken we over python socket client:

client.py

Hier is ons programma voor de client: client.py

Het clientprogramma heeft ook een vergelijkbare socket, zoals we zien in het geval van het serverprogramma. Gewoonlijk wordt het clientprogramma vanaf het serverprogramma uitgevoerd. Het is niet in dezelfde machine als we in dit voorbeeld hier hebben. Met sockets willen we communiceren via Python-programma's op een lokaal genetwerkte machine of zelfs op afstand genetwerkte machines.

Regel 8: Er is een methode binding () in het serverprogramma, hier wordt de methode connect () gebruikt. De tuple hier neemt host en poort mee in de methode. We nemen dezelfde poort als we hadden gebruikt in onze server.py

We moeten server.py en client.py in verschillende terminals uitvoeren en dit is hoe we de verbinding zullen zien optreden.

Output:

Het screenshot is van twee verschillende terminals, één geopend in CMD en de andere geopend in PowerShell in Windows. Het linkervenster opent het programma server.py en de terminal rechts opent het programma client.py.

We zien de uitvoer afgedrukt in de server-side terminal.

String verzenden van het ene bestand naar het andere bestand

We zullen proberen een bericht van de client naar de server te sturen. We zullen een bericht schrijven in het client.py-programma.

1. client.py

Hier is ons programma voor de client: client.py

Regel 9 en Regel 10: We stellen het bericht in een variabele in en verzenden het bericht in de vorm van bytes en converteren het of coderen het in UTF-8-formaat. (UTF is een Unicode-standaard omdat de hele inhoud van het bericht tekens bevat en deze onder de Unicode-grafiek vallen). We worden verondersteld de gegevens zo klein mogelijk te coderen en te houden, anders zou de verzending op een bepaald moment mislukken.

Regel 11: We sluiten de verbinding.

In het serverprogramma zullen we de volgende wijzigingen aanbrengen.

2. server.py

Hier is ons programma voor de server: server.py

Regel 11: Om de verbinding op te bouwen, maken we gebruik van socket client-object. We vermelden de buffergrootte door 1024 bytes (1 KB) aan de methode toe te voegen en we houden het variabele bericht bij.

Regel 13: Dan drukken we de methode af.

Output:

We openen beide terminals opnieuw en zien de volgende uitvoer.

Conclusie - Socket Programming in Python

De basisprincipes van socketprogrammering zijn hier behandeld, maar er moet worden opgemerkt dat het een enorm domein is en dat er nog veel meer zaken aan bod komen in socketprogrammering. Een goed begrip van de basis zou helpen bij het omgaan met complexe client-server-scenario's.

Aanbevolen artikelen

Dit is een handleiding voor het programmeren van sockets in Python. Hier bespreken we het concept van python socket server en python socket client met code-implementatie. U kunt ook de volgende artikelen bekijken voor meer informatie -

  1. Python geneste loops
  2. Top 15 kenmerken van Python
  3. Top 7 Python IDE voor Windows
  4. Verschillende methoden in Python-sets