Розетку на 4 гнезда как подключить


два способа достичь одной цели

Бытовые электрические приборы сильно облегчают жизнь, поэтому их большое количество в доме — правило, а не исключение и не дань моде. Особенно много устройств находится в кухне и там, где «обосновался» телевизор, компьютер: обоим видам умной техники нередко нужна многочисленная армия «помощников», обеспечивающих комфорт хозяевам. Тройники либо удлинители не лучшее решение насущной проблемы, поэтому оптимальный вариант — блок розеток, в котором может быть 2-4 электрические точки. Чтобы избежать неприятных ситуаций в будущем, нужно знать о нюансах их установки. Например, о том, как подключить розетку на 4 гнезда.

Виды устройств и их особенности

Разновидностей штепсельных розеток и блоков довольно много. У каждого типа свои конструктивные особенности и предназначение.

  1. Скрытые приборы монтируют прямо в стену — в специальные подрозетники.
  2. Открытые устройства выпускают для тех квартир, где электропроводка не спрятана в стену.
  3. Выдвижные розеточные блоки монтируют в стол или другую мебель. Их удобство в том, что после эксплуатации приборы легко спрятать от посторонних глаз и шаловливых детских рук.

Как подключить розетку на 4 гнезда: два способа достичь одной цели

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

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

Основные популярные типы

К ним относятся:

Как подключить розетку на 4 гнезда: два способа достичь одной цели

  • вид «С», он имеет 2 контакта — фазу и ноль, обычно покупается, если предназначен для техники малой либо средней мощности;
  • тип «F», помимо традиционной пары оснащается еще одним контактом — заземляющим, эти розетки становятся более популярными, так как для квартир в новостройках заземляющий контур стал нормой;
  • Вид «Е», отличающийся от предыдущего только формой контакта заземления, это штырь, такой же, как и элементы вилки розетки.

Последний тип встречается реже остальных, так как он менее удобен в эксплуатации: разворот штепселя на 180° при такой розетке невозможен.

Защищенность корпуса — следующее различие моделей. Степень безопасности обозначают индексом IP и двухзначным числом, следующим за этими буквами. Первая цифра обозначает класс защиты от пыли, твердых тел, вторая — от влаги.

  1. Для обычных жилых комнат достаточно моделей класса IP22 либо IP33.
  2. IP43 рекомендуют покупать для детских, так как эти розетки оснащены крышками/шторками, блокирующими гнезда, когда техника не используется.
  3. IP44 — тот минимум, что необходим для ванных комнат, кухонь, бань. Угрозой в них может быть не только сильная влажность, но и брызги воды. Подойдут они для монтажа в подвалах без отопления.

Как подключить розетку на 4 гнезда: два способа достичь одной цели

Установка розетки на открытом балконе — достаточное основание для покупки изделия с большей степенью защиты, это как минимум IP55.

Схемы подключения

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

Однофазная сеть без заземления

На схеме обозначены цифрами:

1 — общий автомат;

2 — тот, что отключает фазу на конкретной линии;

3 — нулевая шина;

4 — распределительные коробки, отдельные для каждой розетки;

5 — кабели.

Как подключить розетку на 4 гнезда: два способа достичь одной цели

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

Однофазная сеть, но с заземлением

В этом случае добавляется всего один элемент под номером 6, это — главная заземляющая шина для защитного проводника (РЕ). Он обозначен зеленым цветом.

Как подключить розетку на 4 гнезда: два способа достичь одной цели

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

Возможные способы подключения

Есть несколько способов добиться результата, но все зависит от потенциальной нагрузки на такие розетки.

Шлейф — последовательный метод

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

Как подключить розетку на 4 гнезда: два способа достичь одной цели

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

Если клеммы позволяют, то вместо отдельных перемычек лучше использовать цельный провод. С небольшого участка снимают изоляцию, потом его сгибают петлей, зажимают в клемме, затем таким же методом «расправляются» со следующими розетками. Надежность всех элементов такой электросети — большой плюс этого способа. Минусы — необходимость расчета длины провода, относительно долгая, более трудная, работа — все-таки несущественны.

Гораздо больший минус — невозможность одновременной работы нескольких мощных приборов, так как максимальное значение силы тока для одной розетки — 16 А. Если в работу будут вовлечены сразу несколько «серьезных» единиц техники, то питающий кабель попросту может не выдержать возросшую нагрузку.

Звезда — параллельное подключение

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

Как подключить розетку на 4 гнезда: два способа достичь одной цели

Самые большие минусы — расход провода и трудоемкость работ. Можно сэкономить, если к центральному контакту от щитка проложить провод более толстого сечения, а для соединения с розетками — жилы потоньше. Однако этот вариант называется уже по-другому — смешанным способом.

Комбинированный компромисс

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

Как подключить розетку на 4 гнезда: два способа достичь одной цели

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

Что делать с защитным проводом?

Заземление некоторые (и нередко) делают последовательным методом. Однако он не совсем корректен, поэтому ПУЭ запрещают подобную практику — использование шлейфового подсоединения, если оно применяется для защитных проводов.

Оптимальный вариант — выполнение распайки (скрутки) на заземляющем проводе, идущем к первой розетке «в строю». Через нее ведут отдельный провод к каждому элементу блока. Единственная трудность — помещение защитных проводов в первом подрозетнике, однако ради такого случая можно приобрести более глубокое изделие (например, «высотой» 60 мм).

Как подключить розетку на 4 гнезда: два способа достичь одной цели

Другой способ — монтаж дополнительного подрозетника, призванного сыграть роль монтажной коробки. Потом его прячут под заглушку и камуфлируют отделочным материалом. Это решение позволит сделать распайки/скрутки для фазы с нулем, оснастить их колпачками СИЗ, а провода надежно изолировать.

Выбор правильного способа

Решение в большей степени зависит от суммы, которую хозяева планируют потратить. Другие факторы — мощность приборов, которые будут подключаться периодически либо работать постоянно, наличие отделки на стенах и степень готовности ее нарушить. Самый лучший способ — подключение звездой: или к главному щитку, или к распределительной коробке.

Для приборов, не отличающихся большой мощностью, которые к тому же будут работать не ежечасно, подойдет простое шлейфовое соединение. Капитальный ремонт или его скорое планирование, даст возможность модернизировать дом или квартиру. В этом случае обычно решают, какие приборы планируются к покупке. Именно этот список всех будущих (и настоящих) устройств станет стимулом для расчетов необходимого сечения кабелей, а также выбора способов их подключения.

Монтаж розеток

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

Как подключить розетку на 4 гнезда: два способа достичь одной цели

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

  • белыми;
  • бирюзовыми;
  • коричневыми;
  • красными;
  • оранжевыми;
  • розовыми;
  • серыми;
  • фиолетовыми;
  • черными.

Но все же чаще используют 3 цвета — белый, черный либо коричневый. Нейтраль (N) — нулевой рабочий контакт — голубой или синий. Заземление (PE), которое нередко называют «нулевой защитой», имеет оболочку из желтых и зеленых полос (продольных, поперечных), иногда — желто-зеленый оттенок, а также может быть чисто желтого либо только зеленого цвета.

Процесс установки розеток выглядит так:

Как подключить розетку на 4 гнезда: два способа достичь одной цели

  1. Сначала в стене сверлят отверстие необходимого диаметра под подрозетник, делают штробы для электропроводки. Эти операции не нужны, если задача стоит простая — замена розетки, вышедшей из строя. В этом случае конец силового кабеля вытаскивают наружу, с помощью пылесоса или кисти удаляют весь накопившийся мусор.
  2. Для монтажа подрозетника готовят цементный/гипсовый раствор. После его нанесения в отверстие вставляют установочную коробку, протягивая в нее кабель, фиксируют на одном уровне со стеной. Оставляют работу до полного схватывания раствора.
  3. Затем с концов проводов снимают изоляцию, их заводят в крепления контактов (фаза — слева, ноль — справа, защитный кабель — по центру) и затягивают с помощью отвертки. Проверяют соединение на прочность.
  4. Корпус устанавливают внутрь коробки, выравнивают по горизонтали, с обеих сторон временно фиксируют саморезами. Уровнем корректируют положение, потом затягивают крепеж и распорные лапки, окончательно фиксирующие корпус розетки
  5. Прикрепляют к корпусу крышку, закручивают центральный винт. Включают электричество и индикатором проверяют работоспособность розетки.

Как подключить розетку на 4 гнезда: два способа достичь одной цели

Установка блока из нескольких розеток

Самым популярным способом соединения одиночных элементов у домашних мастеров все же остается шлейфовый, даже несмотря на его недостатки. В этом случае рядом с отверстием с рабочим кабелем сверлят еще несколько (1,2, 3 или 4), расположенных на одном уровне, поэтому перед работой необходимо нанести корректную разметку.

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

Как подключить розетку на 4 гнезда: два способа достичь одной цели

  1. В центре всех будущих отверстий делают углубления: сначала штробят круги коронкой, затем выбивают «лишнее», действуя зубилом и молотком. Если стены выполнены из гипсокартона, операция значительно упрощается.
  2. Следующий этап — установка блока подрозетников. Лучше выбирать модели, которые можно соединить друг с другом. Их закрепляют раствором, в гипсокартоне — лапками, расположенными по бокам конструкций.
  3. Выключают электричество. Из первого подрозетника вытаскивают кабель, с него снимают оплетку, лучший инструмент для этого — монтерский нож с пяткой. Каждый из 3 проводов лишают 10 мм изоляции с помощью съемника проводов (стриппера).
  4. Для создания шлейфа используют провод, аналогичный «оригиналам», другого варианта нет. От края снимают оплетку. 200 мм минимум для блока из 2 розеток, необходимый отрезок зависит от количества отверстий, поэтому длину рассчитывают самостоятельно. Затем кусок просовывают из второго подрозетника до последнего.
  5. Исключение — защитный провод. Так как простой шлейфовый метод с перемычками для заземления запрещен правилами (ПУЭ), то делают ответвления, отрезая куски необходимой длины для каждой розетки комплекса. Их соединяют с главным питающим проводом, опрессовывают клещами, изолируют термоусаживаемой трубкой. Затем укладывают на дно коробки.
  6. Концы кабеля зачищают от изоляции, затем переходят к подсоединению первой розетки. Делают это аналогично: сначала фаза слева, потом нейтраль справа, в центр — заземление. Клеммы осторожно, но плотно затягивают отверткой. Розетку вставляют, слегка выравнивают, но саморезами не фиксируют.
  7. Подключают следующее, второе устройство, действуют по такому же алгоритму. Потом третье, четвертое и т. д. После присоединения всех элементов следует проверка горизонтали (вертикали, если выбран такой способ установки).
  8. Последний этап — монтаж розеток саморезами, затем упорными лапками и фиксация декоративных панелей. Если есть общая рамка, она примеряется, устанавливается, затем поочередно в центрах розеток фиксируют крышки. На этом вопрос, как подключить розетку на 4 гнезда (2, 3 или 5), можно считать подробно рассмотренным.

Если такая «возня» не слишком впечатляет, то можно обойтись покупной моделью — двойной, тройной либо четверной. Однако многие хозяева против такого решения. Причины отказа — возможная экономия, массивность таких розеток, обе шины, снабженные двумя клеммами, которые иногда приводят к ошибкам начинающих мастеров при монтаже. Результатом может стать короткое замыкание, а такое ЧП сведет на нет все старания, а также погубит новое изделие.

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

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

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

Автор

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

Аннотация

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

Розетки

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

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

История

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

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

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

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

 # создать INET, STREAMing сокет s = socket.socket (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)) # стать серверным сокетом серверный сокет.слушать (5) 

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

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

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

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

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

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

МПК

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

См. Также

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

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

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

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

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

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

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

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

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

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

на 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 обеспечивает интерфейс с

.Сокет

- сетевой интерфейс низкого уровня - документация 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 принимает (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

.

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

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

.

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