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>