Как поставить тройную розетку


схема монтажа, с заземлением и без, разновидности

Содержание статьи:

Комплект из трех розеток в одном корпусе обеспечивает подключение большого количества приборов к единому источнику питания. Трехмодульное устройство также сокращает число используемых проводов. Тройная розетка востребована на кухне, в спальне или рабочем кабинете.

Необходимость монтажа тройных розеток

Внутренняя тройная розетка

Применение трехмодульной розетки позволяет пользоваться бытовой техникой и электрическими приборами с комфортом. Совместный механизм отличается рядом преимуществ:

  • низкая стоимость в сравнении с одномодульными изделиями;
  • прочный и безопасный крепеж;
  • отсутствие затрат на организацию дополнительной проводки;
  • оперативность ремонта при поломках;
  • быстрая и легкая установка.

При монтаже тройных устройств понадобится просверливать подрозетник на три модуля. Такой прием существенно сэкономит место в квартире и повысит функциональность электропроводки.

Разновидности изделий

Накладная розетка

По форме, размерам и способу монтажа существуют следующие розетки с тремя гнездами:

  • внутренние – подойдут, если в квартире скрытый тип проводки;
  • внешние – встроенная крышка предотвращает доступ пыли в отверстия, у корпуса повышенная защита;
  • встроенные и накладные – утапливаются в поверхность стены.

Современные производители выпускают модели с заземлением, без него, а также с предохранителем, обеспечивающим выключение в момент короткого замыкания.

У тройных розеток бывают два типа контактов:

  • лепестковые в процессе эксплуатации теряют свойства жесткости и упругости, могут искрить;
  • пружинные характеризуются повышенной износостойкостью.

Оптимальный материал контактов – латунь.

Особенности розетки с выключателем

Тройная розетка с выключателем

Приборы для трех потребителей с кнопкой отключения удобны тем, что выключатель обесточивает часть электроцепи. Это исключает короткие замыкания или накапливание статического электричества. Особенность устройства – цельный корпус на три гнезда и клавиша выключения.

Совмещенные конструкции отличаются:

  • универсальностью – устанавливаются на бетонный, каменный, деревянный и гипсокартонный вид стен;
  • экономичностью – потребуется минимум монтажных траншей и отверстий;
  • простотой подключения – протягивается общий провод, а не отдельный кабель для каждой точки;
  • скоростью разметки поверхности за счет одинаковых размеров изделий;
  • возможностью одновременного управления источниками света и включения электроприборов.

При выходе из строя одного элемента нужно заменять весь блок.

Конструкция тройных розеток

Евророзетка тройная открытой установки

Изделия выполняются на основе корпуса и рабочей части – клемм с пружинами для вилки и контактов, устройством заземления. Современные евророзетки выдерживают силу тока до 16 А, стандартные – до 6 А. Розетки в одном корпусе отличаются большим диаметром круглых отверстий для вилочных стержней. Крышка устройств изготавливается из жаропрочного пластика, сердечник – из керамики. Для монтажа используется специальная горизонтальная и вертикальная панель.

Модули находятся на общем каркасе или на 3-х автономных, соединенных общей панелью. На сегодняшний день используется две модификации тройного блока розеток:

  • С5. Конструкция без заземления в квадратном корпусе. Ставится под старые советские приборы, подключается к сети 220 В.
  • С6. Евророзетка, выдерживающая напряжение 230-380 В. Совместима с техникой с евро-разъемами и вилками.

Блоки подходят для обустройства двух типов проводки. Внутренний для скрытой магистрали монтируется при помощи цилиндрического подрозетника в стены. Внешний подходит для открытой электролинии, устанавливается на пластинчатый подрозетник на поверхность.

В зависимости от производителя тройной модуль имеет ширину от 212 до 220 мм, высоту от 72 до 80 мм. Размер устройства вместе с накладной рамкой – 160 мм в высоту.

Подсоединение электроточек

Соединение подрозетников для тройной розетки

Подсоединять конструкцию следует с учетом сечения провода. При наружном монтаже проверяется способность проводки выдержать 3 потребителя. Наличие раздельных подрозетников предусматривает прокладку дополнительно кабеля по вертикали или горизонтали. После этих работ:

  1. Раздельные подрозетники подключаются к зажимам кабеля и прижимаются при помощи клемм.
  2. Концы проводников скручиваются внутрь прибора.
  3. Устанавливается центральная деталь и фиксируется накладная крышка.

При установке розетки к существующей группе заменяется автомат.

Комплектующие для сборки

Розетка, подходящая на три посадочных гнезда, не всегда соответствует потребностям покупателя или отличается высокой стоимостью. Выходом из ситуации будет самостоятельная сборка блока из одномодульных изделий.

Сделать трехмодульник можно из внутренних частей стандартных розеток с показателем номинального тока 16 А. Накладные рамки убираются, остальные элементы сажаются в специальную накладку с тремя нишами. Получается цельный блок.

Установка подрозетника

Использование тройной розетки на кухне

Монтаж блока начинается после выбора места расположения конструкции:

  • на кухне для единовременного подключения техники прибор лучше поставить над столешницей;
  • в спальне трехмодульное изделие можно установить за телевизором – провода за экраном будут незаметны;
  • при монтаже в ванной требуется герметичный влагостойкий блок, расположенный на 60 см от воды.

После выбора зоны монтажа понадобится подготовить инструменты – уровень, рулетку, маркер или карандаш, перфоратор с насадкой-коронкой и насадкой для проделывания штроб.

Работы по установке выполняйте до чистовой отделки помещения.

Разметка поверхности стены

Разметка стены под проводку

От правильности разметки зависит геометрия конструкции и удобство организации проводки. Чтобы наметить точки монтажа, отталкивайтесь от количества розеток в блоке. При работе пользуйтесь уровнем – он обеспечит ровность расположения устройства.

Расстояние розетки от пола равняется 20-40 см. Между центрами подрозетников – 72 мм. В противном случае не получится точно посадить декоративную панель. Штробление производится строго по горизонтали или вертикали – лучше нарисовать контур лунки.

Просверливание отверстий в стене

Штробы молотком и зубилом

Сделать посадочные места под розетку можно посредством штробирования перфоратором с разными насадками. Для доработки участков используются молоток, зубило и несколько отверток.

Сверление осуществляется поэтапно:

  1. Дрелью или перфоратором с насадкой проделывается круглое отверстие. Коронка должна полностью погрузиться в стену.
  2. Штробу ведут строго по вертикали или горизонтали.
  3. Ширину и глубину каналов проделывают под сечения кабеля или размеры гофротрубы.
  4. Остатки бетона удаляются зубилом.
  5. Для ГКЛ или других мягких материалов применяется специальная насадка или острый строительный нож.
  6. На задней части корпуса подрозетника проделываются три отверстия под провода.
  7. Между ними высверливаются 2 отверстия для вспомогательных проводов.

Допустимое сечение кабеля под розетку – не меньше 2,5 мм2.

Фиксация подрозетника в бетонной стене

Установка подрозетника в нишу и фиксация раствором

Чтобы подрозетник тройной плотно сидел в гнезде, используется белый алебастр. По причине быстрого схватывания материала смесь готовится небольшими порциями. Густота контролируется визуально.

Посадочную нишу для подрозетника промазывают раствором изнутри и проверяют его крепление. На плотной смеси изделие будет сидеть прочно. Если оно проваливается, добавляют еще алебастра и наносят состав повторно. После установки раствор должен просохнуть 2-3 часа. Наружный пласт материала выравнивается наждачной бумагой.

Перед посадкой розетки на алебастр проверьте горизонтальность и вертикальность крепежных винтов.

Подключение тройных розеток

Схема подключения тройной розетки

Розетка встраиваемая тройная и накладное устройство подключается по параллельному принципу:

  1. Рисуется схема, на которой разными цветами помечают нулевой, фазный и заземляющий кабель.
  2. Индикаторной отверткой находят фазу и нейтраль.
  3. Выключают питание от щитка.
  4. Проделывают перемычки от одного розеточного механизма к другому.
  5. Кабель защиты подкидывают на контакты заземления (желто-зеленые).
  6. Ноль (синий провод) и фаза (красный/коричневый провод) подключают к силовым контактам.
  7. Соединения фиксируют при помощи винтов.
  8. Жилы скручивают внутрь короба.
  9. Выравнивают прибор, постукивая по корпусу.

После затягивания винтов-фиксаторов ставят декоративные накладки.

Особенности подключения с заземлением и без

Схема подключения розетки с заземлением

Тройную розетку в один подрозетник при наличии заземления подключают так:

  1. Обесточивание помещения и проверка поступления тока индикаторной отверткой.
  2. Демонтаж старой розетки. Выкручивается центральный винт, ослабляются зажимы, изделие аккуратно вынимается из подрозетника, отключаются или обрезаются провода.
  3. Из ниши удалятся мусор.
  4. С кабеля снимается верхняя изоляция слоем на 20-40 мм с конца и на 3-5 мм зачищается.
  5. Оголенные концы фаз нужно соединить с клеммами и прижать винтами.
  6. Желто-зеленый кабель подсоединяют к заземлению и зажимают винтами.
  7. Розетку ставят на место и фиксируют.

На последнем этапе устанавливается крышка корпуса.

В домах старой постройки прокладывается двухжильная проводка TN-C с фазой и зануленной землей (PEN-проводник). Подключать розетки без заземления нужно только после проверки напряжения мультиметром. Электрический ток в этот момент в квартиру не подается. Для установки лучше выбирать модели, снабженные механизмом заземления. Полную безопасность обеспечит только замена проводки.

Инструкция по безопасности

Соединение проводов пайкой

Решив подсоединить строенный модуль, руководствуйтесь требованиями безопасности:

  1. Выключите электричество и разорвите цепь.
  2. Используйте приборы, инструменты с каучуковой или пластиковой изоляцией на ручках.
  3. Соединяйте провода спайкой.
  4. Проверяйте изоляцию кабеля, при необходимости поместите его в пластиковую трубку.
  5. Обрежьте длинную жилу или скрутите ее в кольцо, спрятав в стене.
  6. Нарастите короткий провод, скрыв контакты.
  7. Для предотвращения короткого замыкания проверьте соответствие розетки и провода мощности и силе тока в цепи.
  8. Монтаж тройного модуля в деревянном доме производите только в металлическом подрозетнике.
  9. Модуль у двери располагайте так, чтобы выключатель был ближе к проему, чем розетка.

Соблюдение техники безопасности поможет качественно выполнить монтажные работы.

Строенный блок розеток удобен в использовании. При наличии навыков и знаний коммутационный прибор можно подключить самостоятельно. Главное – соблюдать последовательность работ.

Программирование сокетов

на Python (Руководство) - Real Python

Сокеты и API сокетов используются для отправки сообщений по сети. Они обеспечивают форму межпроцессного взаимодействия (IPC). Сеть может быть логической локальной сетью для компьютера или сетью, которая физически подключена к внешней сети, со своими собственными подключениями к другим сетям. Очевидным примером является Интернет, к которому вы подключаетесь через своего провайдера.

В этом руководстве есть три различных итерации построения сервера и клиента сокетов с помощью Python:

  1. Мы начнем обучение с рассмотрения простого сервера и клиента сокета.
  2. После того, как вы познакомились с API и принципами работы в этом начальном примере, мы рассмотрим улучшенную версию, которая обрабатывает несколько подключений одновременно.
  3. Наконец, мы перейдем к созданию примера сервера и клиента, которые функционируют как полноценное приложение для сокетов, со своим собственным настраиваемым заголовком и содержимым.

К концу этого руководства вы поймете, как использовать основные функции и методы в модуле сокетов Python для написания собственных клиент-серверных приложений.Это включает в себя демонстрацию того, как использовать настраиваемый класс для отправки сообщений и данных между конечными точками, которые вы можете создавать и использовать для своих собственных приложений.

Примеры в этом руководстве используют Python 3.6. Вы можете найти исходный код на GitHub.

Сети и розетки - большие предметы. О них написаны буквально тома. Если вы новичок в сокетах или сетях, это совершенно нормально, если вы чувствуете себя перегруженным всеми терминами и частями. Я знаю, что сделал!

Но не расстраивайтесь.Я написал для вас это руководство. Как и в случае с Python, мы можем учиться понемногу за раз. Воспользуйтесь функцией закладок в браузере и вернитесь, когда будете готовы к следующему разделу.

Приступим!

Фон

Розетки имеют долгую историю. Их использование началось с ARPANET в 1971 году, а позже стало API в операционной системе Berkeley Software Distribution (BSD), выпущенной в 1983 году, под названием Berkeley Sockets.

Когда в 1990-х годах появился Интернет, вместе с World Wide Web росло и сетевое программирование.Веб-серверы и браузеры были не единственными приложениями, использующими преимущества новых подключенных сетей и сокетов. Широкое распространение получили клиент-серверные приложения всех типов и размеров.

Сегодня, хотя базовые протоколы, используемые API сокетов, эволюционировали с годами, и мы видели новые, API низкого уровня остался прежним.

Наиболее распространенный тип приложений сокетов - это клиент-серверные приложения, в которых одна сторона действует как сервер и ожидает соединений от клиентов.Это тип приложения, о котором я расскажу в этом руководстве. В частности, мы рассмотрим API сокетов для Интернет-сокетов, иногда называемых сокетами Беркли или BSD. Существуют также доменные сокеты Unix, которые могут использоваться только для связи между процессами на одном и том же хосте.

Обзор API сокетов

Модуль сокетов

Python предоставляет интерфейс к API сокетов Беркли. Это модуль, который мы будем использовать в

.

17,2. socket - низкоуровневый сетевой интерфейс - документация Python 2.7.18

Этот модуль обеспечивает доступ к интерфейсу BSD socket . Он доступен на все современные системы Unix, Windows, Mac OS X, BeOS, OS / 2 и, возможно, дополнительные платформы.

Примечание

Некоторое поведение может зависеть от платформы, поскольку звонки выполняются в операционную API системных сокетов.

Введение в программирование сокетов (на C) см. В следующих статьях: Вводный 4.Учебное пособие по межпроцессному взаимодействию 3BSD, Стюарт Сечрест и Расширенное руководство по межпроцессному взаимодействию 4.3BSD, Сэмюэл Дж. Леффлер и др. al, оба в Руководстве программиста UNIX, Дополнительные документы 1 (разделы PS1: 7 и PS1: 8). Справочные материалы по конкретной платформе для различных системные вызовы, связанные с сокетами, также являются ценным источником информации о детали семантики сокета. Для Unix см. Справочные страницы; для Windows, см. спецификацию WinSock (или Winsock 2).Для API, поддерживающих IPv6, читатели могут хочу сослаться на RFC 3493 под названием «Расширения базового интерфейса сокетов для IPv6».

Интерфейс Python представляет собой прямую транслитерацию системы Unix. вызов и интерфейс библиотеки для сокетов в объектно-ориентированном стиле Python: Функция socket () возвращает объект сокета , методы которого реализуют различные системные вызовы сокетов. Типы параметров несколько выше, чем в интерфейсе C: как с операциями read () и write () на Python файлы, распределение буфера при операциях приема выполняется автоматически, а длина буфера неявно используется в операциях отправки.

Адреса сокетов представлены следующим образом: одна строка используется для AF_UNIX семейство адресов. Пара (хост, порт) используется для AF_INET Семейство адресов , где host - строка, представляющая либо имя хоста в нотации домена Интернета, например 'daring.cwi.nl' или адрес IPv4 например, '100.50.200.5' , а порт является целым числом. За AF_INET6 семейство адресов, четыре кортежа (хост, порт, flowinfo, scopeid) , где flowinfo и scopeid представляет sin6_flowinfo и sin6_scope_id член в struct sockaddr_in6 в C.За socket методы модуля, flowinfo и scopeid могут быть опущены только для Обратная совместимость. Учтите, однако, что пропуск scopeid может вызвать проблемы. в манипулировании адресами IPv6 с заданной областью действия. Другие семейства адресов в настоящее время не поддерживается. Формат адреса, требуемый конкретным объектом сокета, следующий: автоматически выбирается на основе семейства адресов, указанного, когда сокет объект был создан.

Для адресов IPv4 вместо адреса хоста принимаются две специальные формы: пустая строка представляет INADDR_ANY , а строка '' представляет INADDR_BROADCAST .Поведение не доступен для IPv6 для обратной совместимости, поэтому вы можете избежать это, если вы собираетесь поддерживать IPv6 в своих программах Python.

Если вы используете имя хоста в части host адреса сокета IPv4 / v6, программа может показывать недетерминированное поведение, поскольку Python использует первый адрес вернулся из разрешения DNS. Адрес сокета будет разрешен по-разному в фактический адрес IPv4 / v6, в зависимости от результатов DNS разрешение и / или конфигурация хоста.Для детерминированного поведения используйте числовой адрес в части хоста .

Новое в версии 2.5: сокеты AF_NETLINK представлены парами pid, группами .

Новое в версии 2.6: поддержка TIPC только для Linux также доступна при использовании AF_TIPC адрес семьи. TIPC - это открытый сетевой протокол, не основанный на IP, разработанный для использования в кластерных компьютерных средах. Адреса представлены кортеж, а поля зависят от типа адреса.Общая форма кортежа (addr_type, v1, v2, v3 [, scope]) , где:

  • addr_type является одним из TIPC_ADDR_NAMESEQ , TIPC_ADDR_NAME , или TIPC_ADDR_ID .

  • область является одним из TIPC_ZONE_SCOPE , TIPC_CLUSTER_SCOPE , и TIPC_NODE_SCOPE .

  • Если addr_type - это TIPC_ADDR_NAME , то v1 - это тип сервера, v2 - это идентификатор порта, а v3 должен быть 0.

    Если addr_type - это TIPC_ADDR_NAMESEQ , то v1 - это тип сервера, v2 - это нижний номер порта, а v3 - это верхний номер порта.

    Если addr_type - это TIPC_ADDR_ID , то v1 - это узел, v2 - это ссылка, а v3 должно быть установлено на 0.

Все ошибки вызывают исключения. Обычные исключения для недопустимых типов аргументов и условия нехватки памяти могут быть повышены; ошибки, связанные с сокетом или адресом семантика вызывает ошибку socket.ошибка .

Неблокирующий режим поддерживается посредством setblocking () . А обобщение этого на основе тайм-аутов поддерживается через settimeout () .

Модуль socket экспортирует следующие константы и функции:

исключение сокет. ошибка

Это исключение возникает для ошибок, связанных с сокетом. Сопутствующая стоимость составляет либо строка, указывающая, что пошло не так, либо пара (errno, string) представляет ошибку, возвращаемую системным вызовом, аналогично значению сопровождающий os.ошибка . См. Модуль errno , который содержит имена для кодов ошибок, определенных базовой операционной системой.

исключение сокет. Геррор

Это исключение возникает для ошибок, связанных с адресом, т. Е. Для функций, которые используют h_errno в C API, включая gethostbyname_ex () и gethostbyaddr () .

Сопутствующее значение - пара (h_errno, строка) , представляющая ошибку возвращается вызовом библиотеки. строка представляет собой описание h_errno , как возвращается функцией hstrerror () C.

исключение сокет. гайеррор

Это исключение возникает для ошибок, связанных с адресом, для getaddrinfo () и getnameinfo () . Сопутствующее значение - пара (ошибка, строка) представляет ошибку, возвращенную вызовом библиотеки. строка представляет Описание ошибки , возвращенной функцией C. gai_strerror () C.В Ошибка Значение будет соответствовать одной из констант EAI_ * , определенных в этом модуль.

исключение сокет. таймаут

Это исключение возникает, когда тайм-аут происходит на сокете, который таймауты, разрешенные предыдущим вызовом settimeout () . Сопутствующее значение это строка, значение которой в настоящее время всегда «истекло время ожидания».

розетка. AF_UNIX
розетка. AF_INET
розетка. AF_INET6

Эти константы представляют семейства адресов (и протоколов), используемые для первый аргумент сокета ()

.Сокет

- сетевой интерфейс низкого уровня - документация Python 3.8.6

Исходный код: Lib / socket.py


Этот модуль обеспечивает доступ к интерфейсу сокета BSD . Он доступен на все современные системы Unix, Windows, MacOS и, возможно, дополнительные платформы.

Примечание

Некоторое поведение может зависеть от платформы, поскольку звонки выполняются в операционную API системных сокетов.

Интерфейс Python представляет собой прямую транслитерацию системы Unix. вызов и интерфейс библиотеки для сокетов в объектно-ориентированном стиле Python: Функция socket () возвращает объект сокета , методы которого реализуют различные системные вызовы сокетов.Типы параметров несколько выше, чем в интерфейсе C: как с операциями read () и write () на Python файлы, распределение буфера при операциях приема выполняется автоматически, а длина буфера неявно используется в операциях отправки.

См. Также

Модуль socketserver

Классы, упрощающие запись сетевых серверов.

Module ssl

Оболочка TLS / SSL для объектов сокета.

Семейства розеток

В зависимости от системы и вариантов сборки, различные семейства сокетов поддерживаются этим модулем.

Формат адреса, требуемый конкретным объектом сокета, автоматически выбрано на основе семейства адресов, указанного, когда объект сокета был создан. Адреса сокетов представлены следующим образом:

  • Адрес сокета AF_UNIX , привязанного к узлу файловой системы представлен в виде строки с использованием кодировки файловой системы и 'surrogateescape' обработчик ошибок (см. PEP 383 ).Адрес в Абстрактное пространство имен Linux возвращается как байтовый объект с начальный нулевой байт; обратите внимание, что сокеты в этом пространстве имен могут взаимодействовать с обычными сокетами файловой системы, поэтому программы, предназначенные для при запуске в Linux может потребоваться иметь дело с обоими типами адресов. Строка или байтовый объект может использоваться для любого типа адреса, когда передавая это как аргумент.

    Изменено в версии 3.3: Раньше предполагалось, что пути сокетов AF_UNIX используют UTF-8 кодирование.

  • Пара (хост, порт) используется для семейства адресов AF_INET , где host - это строка, представляющая либо имя хоста в Интернет-домене запись типа 'daring.cwi.nl' или адрес IPv4, например '100.50.200.5' , и порт - целое число.

    • Для адресов IPv4 вместо хоста принимаются две специальные формы адрес: '' представляет INADDR_ANY , который используется для привязки ко всем интерфейсов, а строка '' представляет ИНАДДР_БРОАДКАСТ .Такое поведение несовместимо с IPv6, поэтому вы можете захотеть избежать этого, если намерены поддерживать IPv6 с помощью своего Программы на Python.

  • Для семейства адресов AF_INET6 , четыре кортежа (хост, порт, flowinfo, scopeid) , где flowinfo и scopeid представляют sin6_flowinfo и sin6_scope_id членов в структуре struct sockaddr_in6 в C. Для socket методы модуля, flowinfo и scopeid могут быть опущены только для Обратная совместимость.Обратите внимание, однако, что пропуск scopeid может вызвать проблемы. в манипулировании адресами IPv6 с заданной областью действия.

    Изменено в версии 3.7: Для многоадресных адресов (с scopeid значимым) адрес может не содержать % scope (или id зоны ) часть. Эта информация является излишней и может безопасно опустить (рекомендуется).

  • AF_NETLINK сокеты представлены парами (pid, groups) .

  • Поддержка TIPC только для Linux доступна с использованием AF_TIPC адрес семьи.TIPC - это открытый сетевой протокол, не основанный на IP, разработанный для использования в кластерных компьютерных средах. Адреса представлены кортеж, а поля зависят от типа адреса. Общая форма кортежа (addr_type, v1, v2, v3 [, scope]) , где:

    • addr_type является одним из TIPC_ADDR_NAMESEQ , TIPC_ADDR_NAME , или TIPC_ADDR_ID .

    • область действия является одним из TIPC_ZONE_SCOPE , TIPC_CLUSTER_SCOPE и ТИПС_НОД_СКОПЕ .

    • Если addr_type - это TIPC_ADDR_NAME , то v1 - это тип сервера, v2 - идентификатор порта, а v3 должно быть 0.

      Если addr_type - это TIPC_ADDR_NAMESEQ , то v1 - это тип сервера, v2 - это нижний номер порта, а v3 - это верхний номер порта.

      Если addr_type - TIPC_ADDR_ID , то v1 - это узел, v2 - это ссылка, а v3 должно быть установлено на 0.

  • Кортеж (интерфейс,) используется для семейства адресов AF_CAN , где interface - строка, представляющая имя сетевого интерфейса, например 'can0' . Имя сетевого интерфейса '' может использоваться для приема пакетов. со всех сетевых интерфейсов этого семейства.

    • Протокол CAN_ISOTP требует кортежа (интерфейс, rx_addr, tx_addr) где оба дополнительных параметра представляют собой длинное целое число без знака, которое представляет собой Идентификатор CAN (стандартный или расширенный).

  • Строка или кортеж (id, unit) используется для SYSPROTO_CONTROL протокол семейства PF_SYSTEM . Строка - это имя управление ядром с использованием динамически назначаемого идентификатора. Кортеж можно использовать, если ID и номер единицы управления ядром известны или если зарегистрированный идентификатор используемый.

  • AF_BLUETOOTH поддерживает следующие протоколы и адреса форматы:

    • BTPROTO_L2CAP принимает (bdaddr, psm) , где bdaddr - адрес Bluetooth в виде строки, а psm - целое число.

    • BTPROTO_RFCOMM принимает (bdaddr, канал) , где bdaddr - это адрес Bluetooth в виде строки, а канал , - целое число.

    • BTPROTO_HCI принимает (device_id,) , где device_id целое число или строка с адресом Bluetooth интерфейс. (Это зависит от вашей ОС; NetBSD и DragonFlyBSD ожидают адрес Bluetooth, в то время как все остальное ожидает целое число.)

      Изменено в версии 3.2: добавлена ​​поддержка NetBSD и DragonFlyBSD.

    • BTPROTO_SCO принимает bdaddr , где bdaddr - это байт объект, содержащий адрес Bluetooth в строковый формат. (например, b'12: 23: 34: 45: 56: 67 ') Этот протокол не поддерживается FreeBSD.

  • AF_ALG - это интерфейс ядра для сокета только для Linux. криптография. Сокет алгоритма настроен с кортежем от двух до четырех элементы (тип, имя [, feat [, маска]]) , где:

    • тип - тип алгоритма в виде строки, т.е.г. aead , хэш ,

.HOWTO по программированию сокетов

- документация Python 3.4.10

Аннотация

Розетки используются почти везде, но являются одними из самых неправильно понятые технологии вокруг. Это обзор розеток на 10 000 футов. На самом деле это не учебник - вам еще нужно поработать, чтобы оперативный. Он не охватывает тонких моментов (а их очень много), но Я надеюсь, что это даст вам достаточно знаний, чтобы начать их прилично использовать.

Розетки

Я буду говорить только о INET (т.е. IPv4), но на них приходится не менее 99% используемые розетки. И я буду говорить только о сокетах STREAM (т. Е. TCP) - если только вы знать, что вы делаете (в этом случае этот HOWTO не для вас!), вы получите лучшее поведение и производительность от сокета STREAM, чем что-либо еще. Я буду попытаться раскрыть тайну того, что такое сокет, а также дать несколько советов о том, как работа с блокирующими и неблокирующими розетками. Но я начну с разговора о блокировка розеток. Вам нужно знать, как они работают, прежде чем начинать неблокирующие розетки.

Отчасти проблема с пониманием этих вещей состоит в том, что «сокет» может означать количество неуловимо разных вещей, в зависимости от контекста. Итак, сначала давайте сделаем различие между «клиентским» сокетом - конечной точкой разговора и «Серверная» розетка, которая больше похожа на операторский коммутатор. Клиент приложение (например, ваш браузер) использует исключительно «клиентские» сокеты; то веб-сервер, с которым он разговаривает, использует как «серверные», так и «клиентские» сокеты.

История

Из различных форм МПК , розетки, безусловно, самые популярные.На любой платформе есть вероятно, будут другие формы IPC, которые быстрее, но для кроссплатформенное общение, сокеты - это почти единственная игра в городе.

Они были изобретены в Беркли как часть разновидности BSD Unix. Они распространяются как лесной пожар с Интернетом. Не зря - комбинация розеток. с INET невероятно легко общаться с произвольными машинами по всему миру (по крайней мере, по сравнению с другими схемами).

Создание сокета

Грубо говоря, когда вы нажимали на ссылку, которая привела вас на эту страницу, ваш браузер сделал что-то вроде следующего:

 # создать INET, STREAMing сокет s = розетка.сокет (socket.AF_INET, socket.SOCK_STREAM) # теперь подключаемся к веб-серверу через порт 80 - обычный http порт s.connect (("www.python.org", 80)) 

Когда соединение завершится, сокет s может использоваться для отправки в запросе текста страницы. Тот же сокет будет читать ответить, а затем быть уничтоженным. Правильно, уничтожено. Клиентские сокеты обычно используются только для одного обмена (или небольшого набора последовательных обмены).

То, что происходит на веб-сервере, немного сложнее.Во-первых, веб-сервер создает «серверный сокет»:

 # создать INET, STREAMing сокет serversocket = socket.socket (socket.AF_INET, socket.SOCK_STREAM) # привязываем сокет к общедоступному хосту и известному порту serversocket.bind ((socket.gethostname (), 80)) # стать серверным сокетом serversocket.listen (5) 

Следует отметить пару вещей: мы использовали socket.gethostname (), чтобы сокет будет видно внешнему миру. Если бы мы использовали s.bind (('localhost', 80)) или s.bind (('127.0.0.1 ', 80)) у нас остался бы «серверный» сокет, но тот, который был виден только внутри той же машины. s.bind ((', 80)) указывает, что сокет доступен по любому адресу, с которым происходит машина имеют.

Второе, на что следует обратить внимание: порты с небольшим номером обычно зарезервированы для «хорошо известных» сервисы (HTTP, SNMP и т. д.). Если вы играете, используйте хорошее большое число (4 цифры).

Наконец, аргумент listen сообщает библиотеке сокетов, что мы хотим, чтобы поставьте в очередь до 5 запросов на соединение (нормальный максимум), прежде чем отказывать извне соединения.Если остальная часть кода написана правильно, этого должно быть достаточно.

Теперь, когда у нас есть «серверный» сокет, прослушивающий порт 80, мы можем ввести основной цикл веб-сервера:

, пока True: # принимать подключения извне (clientocket, адрес) = serversocket.accept () # теперь что-нибудь сделаем с клиентским сокетом # в этом случае мы представим, что это многопоточный сервер ct = client_thread (клиентский сокет) ct.run () 

На самом деле существует 3 основных способа работы этого цикла - отправка поток для обработки клиентского сокета, создайте новый процесс для обработки clientocket или реструктурируйте это приложение, чтобы использовать неблокирующие сокеты, и мультиплексирование между нашим «серверным» сокетом и любыми активными клиентскими сокетами, использующими Выбрать.Подробнее об этом позже. Сейчас важно понять, это: это все «серверный» сокет. Он не отправляет никаких данных. Это не получать любые данные. Он просто производит «клиентские» сокеты. Каждый клиентский сокет создается в ответ на других «клиентских» сокетов, выполняющих соединение () с хост и порт, к которым мы привязаны. Как только мы создали этот клиентский сокет, мы вернитесь к прослушиванию для получения дополнительных подключений. Два «клиента» могут свободно общаться в чате. вверх - они используют какой-то динамически выделенный порт, который будет переработан, когда разговор заканчивается.

МПК

Если вам нужен быстрый IPC между двумя процессами на одной машине, вам следует изучить каналы или разделяемая память. Если вы решили использовать сокеты AF_INET, привяжите Сокет «server» на «localhost». На большинстве платформ это займет сократить несколько слоев сетевого кода и работать немного быстрее.

См. Также

Многопроцессорность интегрирует межплатформенный IPC в более высокий уровень API.

Использование розетки

Первое, что следует отметить, это то, что "клиентский" сокет веб-браузера и Интернет серверные «клиентские» сокеты такие же звери.То есть это «одноранговый» разговор. Или, другими словами, в качестве дизайнера вам придется решить, каковы правила этикета для разговора . Обычно Соединительный сокет начинает диалог, отправляя запрос, или возможно знак. Но это дизайнерское решение, а не розетки.

Теперь есть два набора глаголов, которые можно использовать для общения. Вы можете использовать отправить и recv, или вы можете превратить свой клиентский сокет в файлового зверя и используйте чтение и запись.Именно так Java представляет свои сокеты. Я не собираюсь здесь говорить об этом, но хочу предупредить, что вам нужно использовать заподлицо с розетками. Это буферизованные «файлы», и распространенной ошибкой является напишите что-нибудь, а затем прочтите, чтобы получить ответ. Без смыва там вы можете ждать ответа вечно, потому что запрос все еще может быть в ваш выходной буфер.

Теперь мы подошли к главному камню преткновения сокетов - работе send и recv. в сетевых буферах. Они не обязательно обрабатывают все передаваемые вами байты их (или ожидайте от них), потому что их основное внимание уделяется работе с сетью буферы.Как правило, они возвращаются, когда соответствующие сетевые буферы были заполнены (отправить) или опорожнены (recv). Затем они сообщают вам, сколько байтов они обработано. - это ваша ответственность - позвонить им еще раз, пока ваше сообщение не будет полностью разобрались.

Когда recv возвращает 0 байтов, это означает, что другая сторона закрылась (или находится в процесс закрытия) соединение. Вы больше не получите данных о это соединение. Когда-либо. Возможно, вы сможете успешно отправить данные; Я поговорю подробнее об этом позже.

Протокол, такой как HTTP, использует сокет только для одной передачи. Клиент отправляет запрос, затем читает ответ. Это оно. Сокет отбрасывается. Это значит, что клиент может определить конец ответа, получив 0 байтов.

Но если вы планируете повторно использовать розетку для дальнейших передач, вам необходимо что нет EOT на розетке. Повторяю: если розетка send или recv возвращается после обработки 0 байтов, соединение было сломан.Если соединение , а не разорвано, вы можете подождать навсегда, потому что сокет , а не скажет вам, что больше нечего читать (пока). Если вы немного подумаете об этом, вы поймете, что Основная истина сокетов: сообщения должны иметь фиксированную длину (фу), или быть разделенными (пожать плечами), или указать их длину (намного лучше), или закончиться отключение соединения . Выбор полностью за вами, но некоторые способы правее других).

Если вы не хотите разрывать соединение, самым простым решением является фиксированный длина сообщения:

 класс MySocket: "" "только демонстрационный класс - закодирован для ясности, а не эффективности "" " def __init __ (self, sock = None): если носок None: self.sock = socket.socket ( socket.AF_INET, socket.SOCK_STREAM) еще: самочувствие 
.

Смотрите также