Как подключить розетку четырехместную


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

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

java - Как подключить сокет к сокету сервера в локальной сети?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.Сокет

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

.

Что такое розетка? (Учебники по Java ™> Пользовательские сети> Все о сокетах)

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

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

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

На стороне клиента, если соединение принято, сокет успешно создан, и клиент может использовать сокет для связи с сервером.

Теперь клиент и сервер могут обмениваться данными посредством записи или чтения из своих сокетов.


Определение:

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


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

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

Кроме того, java.net включает класс ServerSocket , который реализует сокет, который серверы могут использовать для прослушивания и приема соединений с клиентами. В этом уроке показано, как использовать классы Socket и ServerSocket .

Если вы пытаетесь подключиться к Интернету, класс URL и связанные классы ( URLConnection , URLEncoder ), вероятно, более подходят, чем классы сокетов.Фактически, URL-адреса являются относительно высокоуровневым соединением с Интернетом и используют сокеты как часть базовой реализации. Видеть Работа с URL-адресами для получения информации о подключении к Интернету через URL-адреса.

.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 
.

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