HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <ul><li><a>Протоколы</a><ul><li><a>О TCP</a></li>
1 <ul><li><a>Протоколы</a><ul><li><a>О TCP</a></li>
2 <li><a>Кратко о UDP</a></li>
2 <li><a>Кратко о UDP</a></li>
3 </ul></li>
3 </ul></li>
4 <li><a>Сокет - это…</a><ul><li><a>Порты и адреса</a></li>
4 <li><a>Сокет - это…</a><ul><li><a>Порты и адреса</a></li>
5 <li><a>Лексика</a></li>
5 <li><a>Лексика</a></li>
6 <li><a>О модуле socket</a></li>
6 <li><a>О модуле socket</a></li>
7 <li><a>Подключение сервера</a></li>
7 <li><a>Подключение сервера</a></li>
8 <li><a>Общие методы</a></li>
8 <li><a>Общие методы</a></li>
9 </ul></li>
9 </ul></li>
10 <li><a>Пример чата</a></li>
10 <li><a>Пример чата</a></li>
11 </ul><p>В этой статье мы рассмотрим клиент-серверную архитектуру на примере Python.</p>
11 </ul><p>В этой статье мы рассмотрим клиент-серверную архитектуру на примере Python.</p>
12 <p>Питон - это универсальный язык программирования. С его помощью можно создать как бизнес-приложение, так и клиент-серверную модель. Второй вариант становится все более популярным и распространенным у разработчиков. Все это благодаря простому синтаксису Python.</p>
12 <p>Питон - это универсальный язык программирования. С его помощью можно создать как бизнес-приложение, так и клиент-серверную модель. Второй вариант становится все более популярным и распространенным у разработчиков. Все это благодаря простому синтаксису Python.</p>
13 <p>В данной статье речь зайдет о так называемом сетевом программировании. Предстоит изучить не только клиент-серверные модели в Python, но и сокеты. В конце будет рассмотрен пример элементарного чата, написанного на этом языке программирования.</p>
13 <p>В данной статье речь зайдет о так называемом сетевом программировании. Предстоит изучить не только клиент-серверные модели в Python, но и сокеты. В конце будет рассмотрен пример элементарного чата, написанного на этом языке программирования.</p>
14 <h2>Протоколы</h2>
14 <h2>Протоколы</h2>
15 <p>Сетевое программирование - это часть, отвечающая за обмен электронными материалами между сервером и клиентом. Соответствующими компонентами модели могут выступать не только физические servers и компьютеры, а также иное оборудование.</p>
15 <p>Сетевое программирование - это часть, отвечающая за обмен электронными материалами между сервером и клиентом. Соответствующими компонентами модели могут выступать не только физические servers и компьютеры, а также иное оборудование.</p>
16 <p>В основе клиент-серверной модели иногда заложена логическая реализация: в пределах одного стола или конкретного железа. Все манипуляции здесь будут применять некоторый свод правил по доставке, инкапсуляции и очередности пакетов и сетевого взаимодействия. Подобный принцип носит название протокола передачи данных.</p>
16 <p>В основе клиент-серверной модели иногда заложена логическая реализация: в пределах одного стола или конкретного железа. Все манипуляции здесь будут применять некоторый свод правил по доставке, инкапсуляции и очередности пакетов и сетевого взаимодействия. Подобный принцип носит название протокола передачи данных.</p>
17 <p>В Питоне программное обеспечение сетевого характера обычно используют протоколы транспортного уровня двух видов: TCP и UDP.</p>
17 <p>В Питоне программное обеспечение сетевого характера обычно используют протоколы транспортного уровня двух видов: TCP и UDP.</p>
18 <h3>О TCP</h3>
18 <h3>О TCP</h3>
19 <p>TCP протокол в Python встречается тогда, когда нужно обеспечить между компьютерами двусторонний канал обмена информации. Здесь требуется запомнить следующие сведения:</p>
19 <p>TCP протокол в Python встречается тогда, когда нужно обеспечить между компьютерами двусторонний канал обмена информации. Здесь требуется запомнить следующие сведения:</p>
20 <ol><li>При его задействовании пакеты будут обязательно доставляться с соблюдением порядка очередности и авто разбиением электронных материалов на пакеты. Предусматривается также контроль передачи информации.</li>
20 <ol><li>При его задействовании пакеты будут обязательно доставляться с соблюдением порядка очередности и авто разбиением электронных материалов на пакеты. Предусматривается также контроль передачи информации.</li>
21 <li>TCP не выделяется особой скоростью функционирования.</li>
21 <li>TCP не выделяется особой скоростью функционирования.</li>
22 <li>Потерянные пакеты будут повторно и многократно отправляться. Это приводит к увеличению количества операций.</li>
22 <li>Потерянные пакеты будут повторно и многократно отправляться. Это приводит к увеличению количества операций.</li>
23 </ol><p>Соответствующий вариант гарантирует, что клиент точно получит всю необходимую информацию.</p>
23 </ol><p>Соответствующий вариант гарантирует, что клиент точно получит всю необходимую информацию.</p>
24 <h3>Кратко о UDP</h3>
24 <h3>Кратко о UDP</h3>
25 <p>UDP - это низкоуровневый протокол. Он позволяет устройствам отправлять и получать данные отдельными пакетами. Логическое соединение здесь будет отсутствовать.</p>
25 <p>UDP - это низкоуровневый протокол. Он позволяет устройствам отправлять и получать данные отдельными пакетами. Логическое соединение здесь будет отсутствовать.</p>
26 <p>UDP не выделяется надежностью. Клиент не получает никаких гарантий полноценного получения передаваемых сведений. Это создает определенные помехи при управлении протоколами в приложениях, где в основе заложена полнота получение электронных материалов и файлов. Подобные особенности приводят к тому, что при сетевом программировании в Python чаще встречается TCP.</p>
26 <p>UDP не выделяется надежностью. Клиент не получает никаких гарантий полноценного получения передаваемых сведений. Это создает определенные помехи при управлении протоколами в приложениях, где в основе заложена полнота получение электронных материалов и файлов. Подобные особенности приводят к тому, что при сетевом программировании в Python чаще встречается TCP.</p>
27 <h2>Сокет - это…</h2>
27 <h2>Сокет - это…</h2>
28 <p>Совет - своеобразный абстрактный объект, который представляет собой конечную точку соединения. Socket в Python можно использовать как файл. Он предусматривает считывание и получение электронных материалов.</p>
28 <p>Совет - своеобразный абстрактный объект, который представляет собой конечную точку соединения. Socket в Python можно использовать как файл. Он предусматривает считывание и получение электронных материалов.</p>
29 <p>Сокет - конечные точки двунаправленного канала связи. Взаимодействуют:</p>
29 <p>Сокет - конечные точки двунаправленного канала связи. Взаимодействуют:</p>
30 <ul><li>в процессе;</li>
30 <ul><li>в процессе;</li>
31 <li>между процессами на одном устройстве;</li>
31 <li>между процессами на одном устройстве;</li>
32 <li>между процессами на разном оборудовании.</li>
32 <li>между процессами на разном оборудовании.</li>
33 </ul><p>Реализовываются через разнообразные типы каналов. Содержат в себе несколько параметров. Среди них выделяют две составляющие - IP-адрес и порт.</p>
33 </ul><p>Реализовываются через разнообразные типы каналов. Содержат в себе несколько параметров. Среди них выделяют две составляющие - IP-адрес и порт.</p>
34 <h3>Порты и адреса</h3>
34 <h3>Порты и адреса</h3>
35 <p>Когда server принимает соединение, он присваивает своему сокету конкретный порт. Port - это число в заголовках пакетов TCP, UDP, которое указывает, для какого софта в системе используется IP-пакет.</p>
35 <p>Когда server принимает соединение, он присваивает своему сокету конкретный порт. Port - это число в заголовках пакетов TCP, UDP, которое указывает, для какого софта в системе используется IP-пакет.</p>
36 <p>Здесь требуется уяснить следующее:</p>
36 <p>Здесь требуется уяснить следующее:</p>
37 <ol><li>Ports с номерами 0-1023 не допустимо. Связано это с тем, что они уже зарезервированы под служебные сетевые протоколы.</li>
37 <ol><li>Ports с номерами 0-1023 не допустимо. Связано это с тем, что они уже зарезервированы под служебные сетевые протоколы.</li>
38 <li>Клиент, отправляя информацию, тоже создает собственный socket.</li>
38 <li>Клиент, отправляя информацию, тоже создает собственный socket.</li>
39 <li>Два сокета по каждую сторону "системы" будут образовывать виртуальное соединение. По нему осуществляется передача электронных материалов.</li>
39 <li>Два сокета по каждую сторону "системы" будут образовывать виртуальное соединение. По нему осуществляется передача электронных материалов.</li>
40 <li>При использовании TCP создаются два сокета: один слушатель (listen) и второй - socket обмена данными. Первый переходит в ожидание и активизируется при новом соединении. Второй носит название accept.</li>
40 <li>При использовании TCP создаются два сокета: один слушатель (listen) и второй - socket обмена данными. Первый переходит в ожидание и активизируется при новом соединении. Второй носит название accept.</li>
41 </ol><p>При помощи этих сведений составить грамотный код, который будет поддерживать работу в сети, станет проще. Но без грамотного управления модель "clients server" реализовать проблематично.</p>
41 </ol><p>При помощи этих сведений составить грамотный код, который будет поддерживать работу в сети, станет проще. Но без грамотного управления модель "clients server" реализовать проблематично.</p>
42 <h3>Лексика</h3>
42 <h3>Лексика</h3>
43 <p>Каждый рассматриваемый компонент имеет собственную лексику. Программисту предстоит уяснить такие данные:</p>
43 <p>Каждый рассматриваемый компонент имеет собственную лексику. Программисту предстоит уяснить такие данные:</p>
44 <ol><li>Domain - это семейство protocols, используемое в виде транспортного механизма. Соответствующие значения выступают в качестве констант.</li>
44 <ol><li>Domain - это семейство protocols, используемое в виде транспортного механизма. Соответствующие значения выступают в качестве констант.</li>
45 <li>Type - тип связи между имеющимися конечными точками. Обычно Sock_Stream применяется для протоколов, ориентированных на непосредственное соединение. Sock_Dgram - без "подключения".</li>
45 <li>Type - тип связи между имеющимися конечными точками. Обычно Sock_Stream применяется для протоколов, ориентированных на непосредственное соединение. Sock_Dgram - без "подключения".</li>
46 <li>Protocol - чаще всего это - нуль. Он применяется для идентификации варианта протокола в пределах типа и домена.</li>
46 <li>Protocol - чаще всего это - нуль. Он применяется для идентификации варианта протокола в пределах типа и домена.</li>
47 <li>Hostname. Идентификатор сетевого интерфейса.</li>
47 <li>Hostname. Идентификатор сетевого интерфейса.</li>
48 <li>Port - каждый сервер слушает клиентов, которые вызывают один или несколько портов. Порт может быть номером Fixnum, строчкой с номером портал или именем службы.</li>
48 <li>Port - каждый сервер слушает клиентов, которые вызывают один или несколько портов. Порт может быть номером Fixnum, строчкой с номером портал или именем службы.</li>
49 </ol><p>Теперь стоит выяснить, что собой представляет модуль сокета. Эта информация пригодится как новичкам, так и опытным программистам.</p>
49 </ol><p>Теперь стоит выяснить, что собой представляет модуль сокета. Эта информация пригодится как новичкам, так и опытным программистам.</p>
50 <h3>О модуле socket</h3>
50 <h3>О модуле socket</h3>
51 <p>Для того, чтобы создать сокет, требуется использовать функцию под названием socket.socket() через модуль socket. У него такой синтаксис:</p>
51 <p>Для того, чтобы создать сокет, требуется использовать функцию под названием socket.socket() через модуль socket. У него такой синтаксис:</p>
52 <p>А вот описание имеющихся параметров:</p>
52 <p>А вот описание имеющихся параметров:</p>
53 <ul><li>_family - AF_UNIX или AF_INET;</li>
53 <ul><li>_family - AF_UNIX или AF_INET;</li>
54 <li>_type - Sock_Stream или Sock_Dgram;</li>
54 <li>_type - Sock_Stream или Sock_Dgram;</li>
55 <li>protocol - обычно не прописывается, по умолчанию - 0.</li>
55 <li>protocol - обычно не прописывается, по умолчанию - 0.</li>
56 </ul><p>При наличии объекта "со кет" можно задействовать функции для клиентского или серверного programming.</p>
56 </ul><p>При наличии объекта "со кет" можно задействовать функции для клиентского или серверного programming.</p>
57 <h3>Подключение сервера</h3>
57 <h3>Подключение сервера</h3>
58 <p>Вот методы, которые помогут подключить сервер:</p>
58 <p>Вот методы, которые помогут подключить сервер:</p>
59 <ul><li>s.bind - связка адреса сокетом;</li>
59 <ul><li>s.bind - связка адреса сокетом;</li>
60 <li>s.listen - установка и запуск прослушивателя TCP;</li>
60 <li>s.listen - установка и запуск прослушивателя TCP;</li>
61 <li>s.accept - пассивное принятие TCP-клиентского соединения, ожидая блокировки.</li>
61 <li>s.accept - пассивное принятие TCP-клиентского соединения, ожидая блокировки.</li>
62 </ul><p>У сокета есть метод s.connect. Он активно проводит инициирование подключения к серверу TCP.</p>
62 </ul><p>У сокета есть метод s.connect. Он активно проводит инициирование подключения к серверу TCP.</p>
63 <h3>Общие методы</h3>
63 <h3>Общие методы</h3>
64 <p>Каждый socket может использовать такие общие methods:</p>
64 <p>Каждый socket может использовать такие общие methods:</p>
65 <ul><li>s.recv - получение сообщения;</li>
65 <ul><li>s.recv - получение сообщения;</li>
66 <li>s.send - передача текста;</li>
66 <li>s.send - передача текста;</li>
67 <li>s.recvfrom - получение сообщения UDP;</li>
67 <li>s.recvfrom - получение сообщения UDP;</li>
68 <li>s.sendto - передача текста UDP;</li>
68 <li>s.sendto - передача текста UDP;</li>
69 <li>s.close - закрытие socket;</li>
69 <li>s.close - закрытие socket;</li>
70 <li>socket.gethostname - возврат имени хоста.</li>
70 <li>socket.gethostname - возврат имени хоста.</li>
71 </ul><p>Теперь, когда понятия import socket, а также client, server и print разобраны, можно взглянуть на пример элементарного чата на Питоне. Это - network приложение.</p>
71 </ul><p>Теперь, когда понятия import socket, а также client, server и print разобраны, можно взглянуть на пример элементарного чата на Питоне. Это - network приложение.</p>
72 <h2>Пример чата</h2>
72 <h2>Пример чата</h2>
73 <p>Сначала требуется написать серверную часть. А именно - то, что принимает соединение. Пример - по порту 5050. Сначала осуществляется подключение:</p>
73 <p>Сначала требуется написать серверную часть. А именно - то, что принимает соединение. Пример - по порту 5050. Сначала осуществляется подключение:</p>
74 <p>Далее - непосредственное создание в коде:</p>
74 <p>Далее - непосредственное создание в коде:</p>
75 <p>Нужно связать рассмотренный ранее компонент с интерфейсом и портом:</p>
75 <p>Нужно связать рассмотренный ранее компонент с интерфейсом и портом:</p>
76 <p>Теперь - создать средство принятия сообщений и их отправки:</p>
76 <p>Теперь - создать средство принятия сообщений и их отправки:</p>
77 <p>А вот клиентская часть:</p>
77 <p>А вот клиентская часть:</p>
78 <p>Остается настроить шифрование. Стоит прибегнуть к самому простому варианту - алгоритм XOR. Его ключевая идея - если есть некоторая величина, есть некий ключ шифрования, то можно через него зашифровать исходные электронные материалы. Для этого побитно применяется операция XOR.</p>
78 <p>Остается настроить шифрование. Стоит прибегнуть к самому простому варианту - алгоритм XOR. Его ключевая идея - если есть некоторая величина, есть некий ключ шифрования, то можно через него зашифровать исходные электронные материалы. Для этого побитно применяется операция XOR.</p>
79 <p>В виде кода это выглядит так:</p>
79 <p>В виде кода это выглядит так:</p>
80 <p>Теперь остается лишь соединить все части кода и посмотреть на получившийся результат. Пример элементарен и примитивен, но для новичков он отлично подходит.</p>
80 <p>Теперь остается лишь соединить все части кода и посмотреть на получившийся результат. Пример элементарен и примитивен, но для новичков он отлично подходит.</p>
81 <p><a>Вот</a>туториалы, которые помогут лучше разобраться в рассмотренной тематике. А специализированные компьютерные дистанционные курсы дадут наиболее развернутую информацию по интересующему направлению.</p>
81 <p><a>Вот</a>туториалы, которые помогут лучше разобраться в рассмотренной тематике. А специализированные компьютерные дистанционные курсы дадут наиболее развернутую информацию по интересующему направлению.</p>
82 <a></a>
82 <a></a>