Въведение в Socket програмиране в Python

При програмирането на сокетите комуникацията се установява чрез мрежа между два гнезда (възли). Сървърът действа като порт на слушателя, който слуша при определен IP адрес, а клиентският гнездо достига до сървърния гнездо за комуникация. За да работим в програмирането на сокети, ще трябва да импортираме библиотеката на сокетите, която предлага питонът.

Python Socket Server

Сокетът е крайна точка за изпращане или получаване на данни, поради което за тази цел имаме нужда от сървър и клиентска сокет програма. За нашата примерна програма ще хостваме сървър и клиент на една и съща машина. Можем дори да изпращаме и получаваме чрез код на сървъра. Трябва да се отбележи, че можем да имаме само една сървърна програма, докато можем да имаме няколко клиентски програми.

Протоколът за контрол на предаването (TCP) е протоколът по подразбиране, който е избран. TCP е надежден, тъй като пакетите, които са изпуснати в мрежата, се откриват и предават от подателя. TCP също така осигурява поръчка за доставка на данни, т.е. редът, в който е изпратен от подателя в подобен ред, който се чете от приложението.

server.py

Разгледайте програмата по-долу: server.py

Ред 3: Socket е предварително инсталирана библиотека и за това ще бъде създаден обект. Този сокет модул е ​​импортиран в програмата python и ще бъде използван като сокет функция по-късно в програмата. Тук създаваме обект, който ще извика сокетната функция.

Ред 4: socket.AF_INET съответства на IPV4 (Ако човек желае да използва IPV6, тогава може да се използва socket.AF_INET6. Това се отнася до семейството на сокетите. AF_INET указва протокола, който ще се използва за комуникация. IPV4 и IPV6 са различни контрол на предаването начини или протоколи за предаване на данни през мрежата.

IPV4 и IPV6 са само различни видове IP адреси. Socket.AF_INET съответства на TCP. Протоколът за контрол на предаването (TCP) работи с IP и определя как компютърът изпраща пакети данни един към друг.

Следващото, което е необходимо, е TCP, за това ще ни трябва сокет.SOCK_STREAM, който е тип сокет. TCP е протокол, ориентиран към връзка, по същество включва осъществяване на трипосочна връзка при ръкостискане със сървър и клиент. След това предоставяме име на хост, където клиентът ще се свърже.

Ред 5: За име на хост, „localhost” или „127.0.01” или socket.gethostname () може да се използва всяко от тях. Той получава IP адреса на сървъра.

Горните са двата параметъра, които определяме за гнездото.

Ред 6: Обикновено имаме много портове в нашата система, така че трябва да използваме неизползван хост порт. Може да се използва всяка четирицифрена, тъй като най-често са заети долните цифри.

Ред 7: Методът bind (), който свързва хоста и порта към сокет.

Всички тези стъпки са необходими за стартиране на нашия сървър. Сега трябва да направим клиента. Както споменахме преди това, можем да имаме множество клиенти.

Ред 8: Имаме възможност да споменем номера на клиента, който може да взаимодейства със сървъра. Това се постига чрез s.listen (6). Стартира TCP слушателя. Числовият представлява броя на клиентите, които могат да взаимодействат. Ако например дойде 7 -мият клиент, той ще бъде отпаднал.

Ред 9: s.accept () ще приеме заявката от клиента и тя връща два обекта, единият е обектът сокет-клиент, а другият е адресът. IP адресът ще бъде адресът на клиента, където присъства нашият клиент.

Ред 10: Това е по-скоро като уведомление до сървъра за установената връзка.

И накрая, ние отпечатваме изявление, което трябва да бъде показано, когато и двете програми се изпълняват в терминала. След като приключим с нашата сървърна програма, ще изписваме клиентската програма.

Python Socket Client

Тук обсъждаме за клиента на сот питон:

client.py

Ето нашата програма за клиента: client.py

Клиентската програма също има подобен сокет, както виждаме в случая със сървърната програма. Обикновено клиентската програма работи от сървърната програма. Не е в същата машина като тази в този пример тук. Със сокетите, това, което възнамеряваме да постигнем, е да комуникираме чрез програми на Python на локално свързана машина или дори дистанционно мрежови машини.

Ред 8: В сървърната програма има метод на свързване (), тук ще използваме метода connect (). Tuple тук ще вземе хост и порт в метода. Взимаме същия порт, който бяхме използвали в нашия server.py

Трябва да стартираме server.py и client.py в различни терминали и така ще видим как се осъществява връзката.

изход:

Екранната снимка е от два различни терминала, единият отворен в CMD, а другият отворен в PowerShell в Windows. Левият прозорец отваря програмата server.py, а терминалът вдясно отваря програмата client.py.

Виждаме изхода, отпечатан в терминала на страната на сървъра.

Изпращане на низ от един файл в друг файл

Ще се опитаме да изпратим съобщение от страна на клиента до страната на сървъра. Ще напишем съобщение в програмата client.py.

1. client.py

Ето нашата програма за клиента: client.py

Ред 9 и ред 10: Ние задаваме съобщението в променлива и изпращаме съобщението под формата на байтове и го преобразуваме или кодираме във формат UTF-8. (UTF е стандарт на Unicode, тъй като цялото съдържание на съобщението е символи и те попадат под диаграмата на Unicode). Ние трябва да кодираме и съхраняваме данните възможно най-малко, в противен случай предаването ще се провали по някое време.

Ред 11: Затваряме връзката.

В сървърната програма ще направим следните промени.

2. server.py

Ето нашата програма за сървъра: server.py

Ред 11: За да изградим връзката, използваме обект клиент сокет. Споменаваме размера на буфера, като добавяме към метода 1024 байта (1 KB) и държим в съобщението с променлива.

Ред 13: След това отпечатваме метода.

изход:

Отваряме отново двата терминала и виждаме следния изход.

Заключение - Сокетно програмиране в Python

Основите на сокетното програмиране са разгледани тук, но трябва да се отбележи, че той е масивен домейн и има много повече неща, които трябва да бъдат обхванати в сокетното програмиране. Разбирането на основите би помогнало за справяне със сложни сценарии клиент-сървър.

Препоръчителни статии

Това е ръководство за Socket програмиране в Python. Тук обсъждаме концепцията на python socket сървър и python socket клиент с изпълнение на код. Можете също да разгледате следните статии, за да научите повече -

  1. Python вложени цикли
  2. Топ 15 функции на Python
  3. Топ 7 Python IDE за Windows
  4. Различни методи в комплектите Python