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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Изделия выполняются на основе корпуса и рабочей части – клемм с пружинами для вилки и контактов, устройством заземления. Современные евророзетки выдерживают силу тока до 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. Модуль у двери располагайте так, чтобы выключатель был ближе к проему, чем розетка.

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

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

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

В этой статье объясняется, как работать с сокетами и потоками сокетов на различных уровнях, от POSIX до Foundation.

Важно: В этой статье описаны способы создания соединений через сокеты, полностью контролируемые вашей программой. Большинство программ лучше обслуживаются высокоуровневыми API, такими как NSURLConnection . Чтобы узнать больше об этих высокоуровневых API, прочтите Обзор сети .

API, описанные в этой статье, следует использовать только в том случае, если вам необходимо поддерживать какой-либо протокол, отличный от протоколов, поддерживаемых встроенными функциями Cocoa или Core Foundation.

Практически на каждом уровне сети программное обеспечение можно разделить на две категории: клиенты (программы, которые подключаются к другим приложениям) и службы (программы, к которым подключаются другие приложения). На высоком уровне эти линии ясны. Большинство программ, написанных с использованием API высокого уровня, являются исключительно клиентами. Однако на более низком уровне линии часто размыты.

Программирование сокетов и потоков обычно попадает в одну из следующих широких категорий:

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

    При обмене данными на основе пакетов единственные различия между клиентами и серверами заключаются в содержимом пакетов, которые каждая программа отправляет и получает, и (предположительно) в том, что каждая программа делает с данными. Сам сетевой код идентичен.

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

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

Эта глава разделена на разделы, основанные на перечисленных выше задачах:

Выбор семейства API

API, который вы выбираете для соединений на основе сокетов, зависит от того, выполняете ли вы соединение с другим хостом или получаете соединение от другого хост.Это также зависит от того, используете ли вы TCP или какой-либо другой протокол. Вот несколько факторов, которые следует учитывать:

  • В OS X, если у вас уже есть сетевой код, который используется совместно с платформами сторонних производителей, вы можете использовать сетевые API POSIX C и продолжать использовать свой сетевой код как есть (на отдельный поток). Если ваша программа основана на цикле выполнения Core Foundation или Cocoa (Foundation), вы также можете использовать API Core Foundation CFStream для интеграции сетевого кода POSIX в вашу общую архитектуру в основном потоке.В качестве альтернативы, если вы используете Grand Central Dispatch (GCD), вы можете добавить сокет в качестве источника отправки.

    В iOS использование сетей POSIX не рекомендуется, поскольку они не активируют сотовую радиосвязь или VPN по запросу. Таким образом, как правило, вы должны отделить сетевой код от любых общих функций обработки данных и переписать сетевой код, используя API более высокого уровня.

    Примечание: Если вы используете сетевой код POSIX, вы должны знать, что сетевой API POSIX не зависит от протокола (вы должны самостоятельно уладить некоторые различия между IPv4 и IPv6).Это API подключения по IP, а не API подключения по имени, что означает, что вам нужно проделать много дополнительной работы, если вы хотите достичь той же производительности и надежности при начальном подключении, которые предоставляют вам высокоуровневые API. бесплатно. Прежде чем вы решите повторно использовать существующий сетевой код POSIX, обязательно прочтите статью «Избегайте разрешения DNS-имен перед подключением к хосту» в Networking Overview .

  • Для демонов и служб, которые прослушивают порт, или для подключений без TCP, используйте сетевые API-интерфейсы C. POSIX или Core Foundation ( CFSocket ).

  • Для клиентского кода в Objective-C используйте сетевые API Foundation Objective-C. Foundation определяет классы высокого уровня для управления URL-соединениями, потоками сокетов, сетевыми службами и другими сетевыми задачами. Это также основная среда Objective-C, не связанная с пользовательским интерфейсом, в OS X и iOS, предоставляющая процедуры для циклов выполнения, обработки строк, объектов коллекции, доступа к файлам и т. Д.

  • Для клиентского кода на C используйте сетевые API-интерфейсы Core Foundation C. Фреймворк Core Foundation и фреймворк CFNetwork являются двумя основными фреймворками языка C в OS X и iOS.Вместе они определяют функции и структуры, на которых построены сетевые классы Foundation.

    Примечание: В OS X CFNetwork является подфреймворком структуры Core Services; в iOS CFNetwork - это фреймворк верхнего уровня.

Написание клиента на основе TCP

Способ создания исходящего соединения зависит от того, какой язык программирования вы используете, от типа соединения (TCP, UDP и т. Д.) И от того, пытаетесь ли вы поделиться кодом с другими платформами (кроме Mac и iOS).

  • Используйте NSStream для исходящих соединений в Objective-C.

    Если вы подключаетесь к определенному хосту, создайте объект CFHost (, а не , NSHost - они не имеют бесплатного моста), затем используйте CFStreamCreatePairWithSocketToHost или CFStreamCreatePair8, подключенный к open хост и порт и свяжите с ним пару объектов CFStream . Затем вы можете преобразовать их в объект NSStream .

    Вы также можете использовать функцию CFStreamCreatePairWithSocketToNetService с объектом CFNetServiceRef для подключения к службе Bonjour. Прочтите Обнаружение и Рекламу сетевых услуг в Обзор сети для получения дополнительной информации.

    Примечание: Метод getStreamsToHost: port: inputStream: outputStream: для NSNetService недоступен в iOS и не рекомендуется в OS X по соображениям производительности. В частности, NSNetService требует, чтобы вы создали экземпляр NSHost .При создании объекта поиск выполняется синхронно. Таким образом, создавать объект NSHost в основном потоке приложения небезопасно. Подробнее см. NSNetService и Автоматический подсчет ссылок (ARC) .

  • Используйте CFStream для исходящих соединений в C.

    Если вы пишете код, который не может включать Objective-C, используйте CFStream API. Он легче интегрируется с другими API-интерфейсами Core Foundation, чем CFSocket , и включает сотовое оборудование на iOS (где применимо), в отличие от API нижнего уровня.Вы можете использовать CFStreamCreatePairWithSocketToHost или CFStreamCreatePairWithSocketToCFHost , чтобы открыть сокет, подключенный к данному хосту и порту, и связать с ним пару объектов CFStream .

    Вы также можете использовать функцию CFStreamCreatePairWithSocketToNetService для подключения к службе Bonjour. Прочтите Обнаружение и Рекламу сетевых услуг в Обзор сети для получения дополнительной информации.

  • Используйте вызовы POSIX, если требуется кроссплатформенная переносимость.

    Если вы пишете сетевой код, который работает исключительно в OS X и iOS, вам обычно следует избегать сетевых вызовов POSIX, потому что с ними труднее работать, чем с API более высокого уровня. Однако, если вы пишете сетевой код, который должен использоваться совместно с другими платформами, вы можете использовать сетевые API POSIX, чтобы вы могли использовать один и тот же код везде.

    Никогда не используйте синхронные сетевые API POSIX в основном потоке приложения с графическим интерфейсом. Если вы используете синхронные сетевые вызовы в приложении с графическим интерфейсом, вы должны делать это в отдельном потоке.

    Примечание. Сеть POSIX не активирует сотовую радиосвязь на iOS. По этой причине использование сетевого API POSIX в iOS обычно не рекомендуется.

В подразделах ниже описывается использование NSStream . Если не указано иное, API CFStream имеет функции с похожими именами и ведет себя аналогичным образом.

Чтобы узнать больше об API сокетов POSIX, прочтите FAQ по UNIX Socket на http://developerweb.net/.

Установление соединения

Как правило, для установления TCP-соединения с удаленным хостом рекомендуется использовать потоки.Потоки автоматически решают многие проблемы, возникающие при TCP-соединениях. Например, потоки предоставляют возможность подключения по имени хоста, а в iOS они автоматически активируют сотовый модем устройства или VPN по запросу, когда это необходимо (в отличие от CFSocket или сокетов BSD). Потоки также являются более похожим на Какао сетевым интерфейсом, чем протоколы более низкого уровня, и ведут себя в значительной степени совместимым с API потокового файла Какао.

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

После получения входных и выходных потоков, вы должны немедленно сохранить их, если вы не используете автоматический подсчет ссылок .Затем приведите их к объектам NSInputStream и NSOutputStream , установите их объекты-делегаты (которые должны соответствовать протоколу NSStreamDelegate ), запланируйте их в текущем цикле выполнения и вызовите их методы open .

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

Обработка событий

Когда метод stream: handleEvent: вызывается в делегате объекта NSOutputStream и значение параметра streamEvent равно NSStreamEventHasSpaceAvailable , вызовите write: maxLength: data: Этот метод возвращает количество записанных байтов или отрицательное число в случае ошибки. Если было записано меньше байтов, чем вы пытались отправить, вы должны поставить в очередь оставшиеся данные и отправить их после повторного вызова метода делегата с событием NSStreamEventHasSpaceAvailable .В случае возникновения ошибки следует позвонить по номеру streamError , чтобы выяснить, что пошло не так.

Когда метод stream: handleEvent: вызывается в вашем NSIn

.

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 () .В Ошибка Значение будет соответствовать одной из констант EAI_ * , определенных в этом модуль.

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

Это

.Сокет

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

Исходный код: 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, scope_id) , где flowinfo и scope_id представляют sin6_flowinfo и sin6_scope_id членов в структуре struct sockaddr_in6 в C. Для socket методы модуля, flowinfo и scope_id могут быть опущены только для Обратная совместимость.Обратите внимание, однако, что пропуск scope_id может вызвать проблемы. в манипулировании адресами IPv6 с заданной областью действия.

    Изменено в версии 3.7: Для многоадресных адресов (с scope_id значимым) адрес может не содержать % scope_id (или 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 требует кортежа (interface, rx_addr, tx_addr) где оба дополнительных параметра представляют собой длинное целое число без знака, которое представляет собой Идентификатор CAN (стандартный или расширенный).

    • Протокол CAN_J1939 требует кортежа (интерфейс, имя, pgn, адрес) где дополнительные параметры - это 64-битное целое число без знака, представляющее Имя ЭБУ, 32-битное целое число без знака, представляющее номер группы параметров (PGN) и 8-битное целое число, представляющее адрес.

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

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

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

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

    • BTPROTO_HCI принимает (устройство_

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

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

Автор

Гордон Макмиллан

Аннотация

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

Розетки

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

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

История

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

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

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

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

 # создать сокет INET, STREAMing s = socket.socket ( socket.AF_INET, socket.SOCK_STREAM) # теперь подключитесь к веб-серверу через порт 80 # - нормальный http порт s.connect (("www.mcmillan-inc.com", 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, мы можем ввести основной цикл веб-сервера:

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

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

МПК

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

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

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

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

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

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

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

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

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

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

.

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