0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Определение</a></li>
1
<ul><li><a>Определение</a></li>
2
<li><a>Протокол</a></li>
2
<li><a>Протокол</a></li>
3
<li><a>Python и sockets</a><ul><li><a>Ключевые функции</a></li>
3
<li><a>Python и sockets</a><ul><li><a>Ключевые функции</a></li>
4
</ul></li>
4
</ul></li>
5
<li><a>Пример использования</a><ul><li><a>Тайм-аут</a></li>
5
<li><a>Пример использования</a><ul><li><a>Тайм-аут</a></li>
6
</ul></li>
6
</ul></li>
7
</ul><p>В сетевом программировании все работает легко и просто: клиент формирует и направляет запрос, сервер получает его и обрабатывает. Для реализации подобной модели необходимо использовать разнообразные языки программирования. В них имеются специальные функции и команды, помогающие добиться желаемого результата. Они используются для налаживания соединения между вычислительными устройствами в пределах одной и той же сети. Ключевую роль здесь играет так называемый сокет.</p>
7
</ul><p>В сетевом программировании все работает легко и просто: клиент формирует и направляет запрос, сервер получает его и обрабатывает. Для реализации подобной модели необходимо использовать разнообразные языки программирования. В них имеются специальные функции и команды, помогающие добиться желаемого результата. Они используются для налаживания соединения между вычислительными устройствами в пределах одной и той же сети. Ключевую роль здесь играет так называемый сокет.</p>
8
<p>Далее предстоит познакомиться с этим элементом поближе. Необходимо выяснить, что собой представляет сокет, для чего и как он используется, изучить его ключевые функции и иные особенности. А еще - разобраться в принципах работы сетей. Предложенная информация рассчитана на широкий круг лиц. Она подойдет как обычным пользователям, так и IT-специалистам.</p>
8
<p>Далее предстоит познакомиться с этим элементом поближе. Необходимо выяснить, что собой представляет сокет, для чего и как он используется, изучить его ключевые функции и иные особенности. А еще - разобраться в принципах работы сетей. Предложенная информация рассчитана на широкий круг лиц. Она подойдет как обычным пользователям, так и IT-специалистам.</p>
9
<h2>Определение</h2>
9
<h2>Определение</h2>
10
<p>Задумываясь над тем, что такое сокет в сети, необходимо изучить его определение. Сокет - это программные объекты (интерфейсы), которые отвечают за определение конечной точки соединения.</p>
10
<p>Задумываясь над тем, что такое сокет в сети, необходимо изучить его определение. Сокет - это программные объекты (интерфейсы), которые отвечают за определение конечной точки соединения.</p>
11
<p>Сокет - это абстрактный файл, обеспечивающий сетевую связность программного приложения. Программа за счет этого элемента способна устанавливать входящие и исходящие соединения, принимать данные. Работа сокета осуществляется на уровне операционной системы и предусматривает два параметра: порт и IP-адрес.</p>
11
<p>Сокет - это абстрактный файл, обеспечивающий сетевую связность программного приложения. Программа за счет этого элемента способна устанавливать входящие и исходящие соединения, принимать данные. Работа сокета осуществляется на уровне операционной системы и предусматривает два параметра: порт и IP-адрес.</p>
12
<h2>Протокол</h2>
12
<h2>Протокол</h2>
13
<p>Для обмена данными по сети необходимо использовать протоколы. Это - некоторый набор правил и принципов передачи и приема информации в клиент-серверных моделях. Протоколы отвечают за:</p>
13
<p>Для обмена данными по сети необходимо использовать протоколы. Это - некоторый набор правил и принципов передачи и приема информации в клиент-серверных моделях. Протоколы отвечают за:</p>
14
<ul><li>упаковку данных;</li>
14
<ul><li>упаковку данных;</li>
15
<li>распаковку информации;</li>
15
<li>распаковку информации;</li>
16
<li>передачу данных:</li>
16
<li>передачу данных:</li>
17
<li>прочие операции.</li>
17
<li>прочие операции.</li>
18
</ul><p>Далее предстоит познакомиться с сокетом Python. Для этого необходимо ориентироваться на протокол TCP (transmission Control Protocol).</p>
18
</ul><p>Далее предстоит познакомиться с сокетом Python. Для этого необходимо ориентироваться на протокол TCP (transmission Control Protocol).</p>
19
<p>С помощью соответствующего компонента удается задать правила выполнения основной части сетевых задач:</p>
19
<p>С помощью соответствующего компонента удается задать правила выполнения основной части сетевых задач:</p>
20
<ul><li>подключение к базам данных;</li>
20
<ul><li>подключение к базам данных;</li>
21
<li>обеспечение взаимодействия сетевого характера;</li>
21
<li>обеспечение взаимодействия сетевого характера;</li>
22
<li>работа с веб-сервисами.</li>
22
<li>работа с веб-сервисами.</li>
23
</ul><p>Есть еще один популярный протокол обмена данными - UDP. Он не требует подтверждения от принимающей стороны в отличие от TCP. Такой элемент не гарантирует стабильную передачу данных. TCP - это более надежный вариант информационного обмена. Он предусматривает гарантии доставки данных до получателя с сохранением очередности.</p>
23
</ul><p>Есть еще один популярный протокол обмена данными - UDP. Он не требует подтверждения от принимающей стороны в отличие от TCP. Такой элемент не гарантирует стабильную передачу данных. TCP - это более надежный вариант информационного обмена. Он предусматривает гарантии доставки данных до получателя с сохранением очередности.</p>
24
<p>Если клиенту необходимо подключиться к серверу, он отправляет свои данные через "окно" (это и есть сокет). Соответствующая информация передается в TCP-протокол, которые заранее запускается на клиентской стороне. Данные проходят через специальный буфер и направляются на серверную сторону. Там информация снова направляется в буфер, а затем - в сокет.</p>
24
<p>Если клиенту необходимо подключиться к серверу, он отправляет свои данные через "окно" (это и есть сокет). Соответствующая информация передается в TCP-протокол, которые заранее запускается на клиентской стороне. Данные проходят через специальный буфер и направляются на серверную сторону. Там информация снова направляется в буфер, а затем - в сокет.</p>
25
<h2>Python и sockets</h2>
25
<h2>Python и sockets</h2>
26
<p>Python - достаточно простой и популярный язык программирования. Он часто используется в разработке, поэтому с его сокетами предстоит познакомиться далее. Для работы с рассматриваемыми элементами языком программирования используется модуль socket. В нем предусматривается реализация функций, отвечающих за создание нового сокета, установление и закрытие соединений, отправку данных по сети, а также их непосредственное получение.</p>
26
<p>Python - достаточно простой и популярный язык программирования. Он часто используется в разработке, поэтому с его сокетами предстоит познакомиться далее. Для работы с рассматриваемыми элементами языком программирования используется модуль socket. В нем предусматривается реализация функций, отвечающих за создание нового сокета, установление и закрытие соединений, отправку данных по сети, а также их непосредственное получение.</p>
27
<p>Выше можно увидеть, как будет выглядеть соединение через TCP-протоколы в Python.</p>
27
<p>Выше можно увидеть, как будет выглядеть соединение через TCP-протоколы в Python.</p>
28
<h3>Ключевые функции</h3>
28
<h3>Ключевые функции</h3>
29
<p>Для сетевого программирования необходимо использовать определенные функции модуля socket. Таблица, представленная ниже, поможет ознакомиться с ними.</p>
29
<p>Для сетевого программирования необходимо использовать определенные функции модуля socket. Таблица, представленная ниже, поможет ознакомиться с ними.</p>
30
Общие функции (для клиента и сервера)socket()Отвечает за создание сокета. Функция будет возвращать объект сокета, методы которого реализуют разнообразные системные вызовы сокетов.send()Функция, использующаяся для отправки данныхrecv()Получение данныхclose()Закрытие соединенияКлиентские функцииconnect()Установка соединенияСерверные функцииbind()Отвечает за привязку сокета к IP-адресу и порту устройстваlisten()Указание о готовности принимать соединенияaccept()Принятие запроса на установку соединения<p>Чтобы лучше понимать принципы работы рассматриваемого элемента, лучше всего рассмотреть их на наглядном примере. Далее будет подробно изучен пример работы сокета на Python.</p>
30
Общие функции (для клиента и сервера)socket()Отвечает за создание сокета. Функция будет возвращать объект сокета, методы которого реализуют разнообразные системные вызовы сокетов.send()Функция, использующаяся для отправки данныхrecv()Получение данныхclose()Закрытие соединенияКлиентские функцииconnect()Установка соединенияСерверные функцииbind()Отвечает за привязку сокета к IP-адресу и порту устройстваlisten()Указание о готовности принимать соединенияaccept()Принятие запроса на установку соединения<p>Чтобы лучше понимать принципы работы рассматриваемого элемента, лучше всего рассмотреть их на наглядном примере. Далее будет подробно изучен пример работы сокета на Python.</p>
31
<h2>Пример использования</h2>
31
<h2>Пример использования</h2>
32
<p>Для примера нужно представить ситуацию: клиент хочет получить от сервера данные о текущем времени и дате. Для этого требуется настроить соединение через TCP-протокол, сформировать запрос и отправить его на серверную часть. Для всего этого нужно использовать sockets.</p>
32
<p>Для примера нужно представить ситуацию: клиент хочет получить от сервера данные о текущем времени и дате. Для этого требуется настроить соединение через TCP-протокол, сформировать запрос и отправить его на серверную часть. Для всего этого нужно использовать sockets.</p>
33
<p>Вот - блок кода, отвечающий за серверную часть исходного приложения:</p>
33
<p>Вот - блок кода, отвечающий за серверную часть исходного приложения:</p>
34
<p>Здесь:</p>
34
<p>Здесь:</p>
35
<ol><li>s = socket(AF_INET, SOCK_STREAM) - запуск функции socket() с двумя параметрами: communication domain (домен) и type of socket (тип). В качестве первой характеристики обычно передается значение AF_INET. Оно указывает на то, что создаваемый socket относится к сетевым. В качестве типа указан SOCK_STREAM, который указывает на то, что используемый сокет является потоковым. Он будет реализовывать последовательный двусторонний поток байтов при помощи TCP-протокола.</li>
35
<ol><li>s = socket(AF_INET, SOCK_STREAM) - запуск функции socket() с двумя параметрами: communication domain (домен) и type of socket (тип). В качестве первой характеристики обычно передается значение AF_INET. Оно указывает на то, что создаваемый socket относится к сетевым. В качестве типа указан SOCK_STREAM, который указывает на то, что используемый сокет является потоковым. Он будет реализовывать последовательный двусторонний поток байтов при помощи TCP-протокола.</li>
36
<li>s.blind((>>,7777)) - присваивание порта 7777.</li>
36
<li>s.blind((>>,7777)) - присваивание порта 7777.</li>
37
<li>s.listen(5) - режим ожидания. Поддерживается работа сразу с 5 запросами. Слушающий процесс обычно расположен в цикле ожидания. Он активируется при появлении нового соединения.</li>
37
<li>s.listen(5) - режим ожидания. Поддерживается работа сразу с 5 запросами. Слушающий процесс обычно расположен в цикле ожидания. Он активируется при появлении нового соединения.</li>
38
<li>timestr.encode(‘utf-8’) - выбор формата обмена данными.</li>
38
<li>timestr.encode(‘utf-8’) - выбор формата обмена данными.</li>
39
</ol><p>А вот - блок кода, отвечающий за клиентскую часть рассматриваемого приложения:</p>
39
</ol><p>А вот - блок кода, отвечающий за клиентскую часть рассматриваемого приложения:</p>
40
<p>Здесь:</p>
40
<p>Здесь:</p>
41
<ol><li>s = socket(AF_INET, SOCK_STREAM) - функция, отвечающая за создание сокета.</li>
41
<ol><li>s = socket(AF_INET, SOCK_STREAM) - функция, отвечающая за создание сокета.</li>
42
<li>s.connect((‘localhost’, 7777)) - запуск функции connect с указанием сервера и порта.</li>
42
<li>s.connect((‘localhost’, 7777)) - запуск функции connect с указанием сервера и порта.</li>
43
<li>tm = s.recv(1024) - принятие не более 1024 байтов данных.</li>
43
<li>tm = s.recv(1024) - принятие не более 1024 байтов данных.</li>
44
<li>tm.decode(‘utf-8’) - формат декодирования данных.</li>
44
<li>tm.decode(‘utf-8’) - формат декодирования данных.</li>
45
</ol><p>При работе с рассматриваемым элементом немаловажную роль играет размер буфера. Небольшие его "габариты" обеспечивают более быструю передачу данных, но их объем окажется очень маленьким.</p>
45
</ol><p>При работе с рассматриваемым элементом немаловажную роль играет размер буфера. Небольшие его "габариты" обеспечивают более быструю передачу данных, но их объем окажется очень маленьким.</p>
46
<p>Большой буфер пропускает через себя крупные информационные потоки, но требует значительных ресурсов. Это негативно сказывается на скорости обмена данными.</p>
46
<p>Большой буфер пропускает через себя крупные информационные потоки, но требует значительных ресурсов. Это негативно сказывается на скорости обмена данными.</p>
47
<p>Вот - код, который поможет установить размер буфера в клиент-серверной модели:</p>
47
<p>Вот - код, который поможет установить размер буфера в клиент-серверной модели:</p>
48
<p>Для реализации поставленной задачи нужно задействовать метод socket.setsockopt(level, optname, None, optlen: int). Он получает три параметра: уровень, имя и числовую переменную (сам размер буфера).</p>
48
<p>Для реализации поставленной задачи нужно задействовать метод socket.setsockopt(level, optname, None, optlen: int). Он получает три параметра: уровень, имя и числовую переменную (сам размер буфера).</p>
49
<h3>Тайм-аут</h3>
49
<h3>Тайм-аут</h3>
50
<p>Для активности socket можно задать таймаут (время прослушивания), в течение которого осуществляется ожидание отправки или получения данных. Эта функция применяется к одному вызову операции чтения или записи.</p>
50
<p>Для активности socket можно задать таймаут (время прослушивания), в течение которого осуществляется ожидание отправки или получения данных. Эта функция применяется к одному вызову операции чтения или записи.</p>
51
<p>Для реализации опции используется функция socket.settimeout(value). Value измеряется в секундах. После установленного времени socket будет блокироваться для операции. Если value = 0, рассматриваемый элемент переводится в неблокирующий режим. В нем операции выполняются немедленно.</p>
51
<p>Для реализации опции используется функция socket.settimeout(value). Value измеряется в секундах. После установленного времени socket будет блокироваться для операции. Если value = 0, рассматриваемый элемент переводится в неблокирующий режим. В нем операции выполняются немедленно.</p>
52
<p>Теперь понятно, для чего нужен сокет, а также принципы его работы. Лучше разобраться в изучаемом направлении помогут дистанционные компьютерные курсы.</p>
52
<p>Теперь понятно, для чего нужен сокет, а также принципы его работы. Лучше разобраться в изучаемом направлении помогут дистанционные компьютерные курсы.</p>
53
<p><em>Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в <a>Otus</a>!</em> </p>
53
<p><em>Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в <a>Otus</a>!</em> </p>
54
54