Uvod u programiranje socket-a u Pythonu

Kod programiranja utičnica, komunikacija se uspostavlja putem mreže između dvije utičnice (čvorova). Poslužitelj djeluje kao ulaz slušatelja koji sluša na određenom IP-u, a klijentska utičnica dopire do utičnice poslužitelja radi komunikacije. Da bismo radili u programiranju socketa, morat ćemo uvesti knjižnicu socket-a koju pruža python.

Python Socket Server

Socket je krajnja točka za slanje ili primanje podataka, stoga nam je potreban poslužitelj i program utičnice klijenta. Za naš primjer programa, mi ćemo biti domaćin poslužitelju i klijentu na istom računalu. Čak možemo slati i primati putem poslužiteljskog koda. Treba napomenuti da možemo imati samo jedan program poslužitelja, dok možemo imati više klijentskih programa.

Protokol kontrole prijenosa (TCP) je zadani protokol koji je odabran. TCP je pouzdan jer pošiljalac otkrije i prenese pakete koji se spuste u mrežu. TCP omogućuje i dostavu podataka redom, tj. Redoslijed u kojem ih pošiljalac šalje sličnim redoslijedom kojim čita aplikacija.

server.py

Pogledajte program u nastavku: server.py

Redak 3: Socket je unaprijed instalirana knjižnica i za to će se stvoriti objekt. Ovaj modul soketa uvozi se u program python i koristit će se kao funkcija utičnice kasnije u programu. Ovdje stvaramo objekt koji će nazvati funkciju socket.

Redak 4: socket.AF_INET odgovara IPV4 (Ako želite koristiti IPV6, tada se može koristiti utičnica.AF_INET6. To se odnosi na obitelj utičnica. AF_INET određuje protokol koji će se koristiti za komunikaciju. IPV4 i IPV6 su različita kontrola prijenosa. načini ili protokoli za prijenos podataka putem mreže.

IPV4 i IPV6 samo su različite vrste IP adresa. Socket.AF_INET odgovara TCP. Protokol kontrole prijenosa (TCP) radi s IP-om i definira kako računalo međusobno šalje pakete podataka.

Sljedeće je potreban TCP za to će nam trebati socket.SOCK_STREAM, što je tip utičnice. TCP je protokol orijentiran na vezu, koji u osnovi uključuje trosmjerno rukovanje vezom sa serverom i klijentom. Tada dajemo ime računala gdje će se klijent povezati.

Redak 5: Za ime računala, "localhost" ili "127.0.01" ili socket.gethostname () može se koristiti bilo koji od ovih. Dobija IP adresu poslužitelja.

Navedena su dva parametra koja definiramo za utičnicu.

Redak 6: Obično imamo mnogo portova u našem sustavu, tako da trebamo iskoristiti nekorišćeni host port. Bilo koja četveroznamenkasti broj može se koristiti jer su uglavnom donje znamenke zauzete.

Redak 7: Metoda bind (), koja veže host i port na utičnicu.

Svi ovi koraci potrebni su za pokretanje našeg poslužitelja. Sada moramo napraviti klijenta. Kao što je već spomenuto, možemo imati više klijenata.

Redak 8: Imamo mogućnost spominjanja broja klijenta koji može komunicirati s poslužiteljem. To se postiže pomoću s.liste (6). Pokreće TCP slušatelj. Numerički predstavlja broj klijenata koji mogu komunicirati. Ako, na primjer, dođe 7. klijent, on će biti odbačen.

Redak 9: s.accept () će prihvatiti zahtjev klijenta i on vraća dva objekta, jedan je objekt socket-client, a drugi je adresa. IP adresa će biti adresa klijenta gdje je naš klijent prisutan.

Redak 10: Ovo je više poput obavijesti poslužitelju o uspostavljenoj vezi.

Konačno, ispisujemo izjavu koja bi se trebala prikazati kada se oba programa izvode u terminalu. Nakon što završimo s našim poslužiteljskim programom, otpisat ćemo program za klijente.

Klijent utičnice Python

Ovdje smo razgovarali o python socket klijentu:

client.py

Evo našeg programa za klijenta: client.py

Program za klijente također ima sličnu utičnicu kao što vidimo u slučaju poslužiteljskog programa. Program klijenta obično se izvodi iz poslužiteljskog programa. Nije u istom stroju kao ovdje u ovom primjeru. Pomoću utičnica, ono što namjeravamo postići jest komuniciranje putem Python programa na lokalno umreženom stroju ili čak daljinski umreženim strojevima.

Redak 8: Postoji metoda vezivanja () u programu poslužitelja, ovdje će se koristiti metoda connect (). Tuple će ovdje preuzeti host i port u metodi. Uzimamo isti port koji smo koristili u našem server.py

Moramo pokrenuti server.py i client.py u različitim terminalima i tako ćemo vidjeti kako se veza događa.

Izlaz:

Snimka zaslona je s dva različita terminala, jedan je otvoren u CMD-u, a drugi otvoren u PowerShellu u sustavu Windows. Lijevi prozor otvara server.py program, a terminal s desne strane otvara client.py program.

Vidimo izlaz ispisan na terminalu na strani poslužitelja.

Slanje niza iz jedne datoteke u drugu datoteku

Pokušat ćemo poslati poruku sa strane klijenta na strani poslužitelja. Poruku ćemo napisati u client.py programu.

1. client.py

Evo našeg programa za klijenta: client.py

Redak 9 i Redak 10: Postavljamo poruku u varijablu i šaljemo je u obliku bajtova te ju pretvaramo ili kodiramo u UTF-8 formatu. (UTF je Unicode standard jer su svi sadržaji poruke znakovi i oni dolaze pod Unicode grafikon). Moramo pretpostaviti da kodiramo i čuvamo podatke što je moguće manje, inače bi prijenos u određenom vremenu mogao uspjeti.

Redak 11: Zatvaramo vezu.

U poslužiteljskom programu izvršit ćemo sljedeće promjene.

2. server.py

Evo našeg programa za poslužitelj: server.py

Redak 11: Kako bi izgradili vezu, koristimo objekt socket klijenta. Spominjemo veličinu međuspremnika dodavanjem metode 1024 bajta (1 KB) i zadržavamo se u poruci varijable.

Redak 13: Zatim ispisujemo metodu.

Izlaz:

Ponovno otvaramo oba terminala i vidimo sljedeći izlaz.

Zaključak - Programiranje utičnica u Pythonu

Ovdje su obrađene osnove programiranja utičnica, ali mora se primijetiti da je to ogromna domena i ima još mnogo toga što treba pokriti u programiranju socket-a. Dobro razumijevanje osnova pomoglo bi u suočavanju sa složenim scenarijima klijent-poslužitelj.

Preporučeni članci

Ovo je vodič za Socket programiranje u Pythonu. Ovdje smo raspravljali o konceptu python socket poslužitelja i python socket klijenta s implementacijom koda. Možete pogledati i sljedeće članke da biste saznali više -

  1. Python ugniježđene petlje
  2. Top 15 značajki Pythona
  3. Top 7 Python IDE-a za Windows
  4. Različite metode u setovima Python

Kategorija: