HTML Diff
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((&gt;&gt;,7777)) - присваивание порта 7777.</li>
36 <li>s.blind((&gt;&gt;,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