Как подключить розетку от розетки: Подключение розетки от розетки — как сделать правильно
- Подключение розетки от розетки — как сделать правильно
- Как из одной розетки сделать две: варианты устройства проводки
- socketserver — Платформа для сетевых серверов — Документация по Python 3.
- руководств по программированию на Python
Подключение розетки от розетки — как сделать правильно
Есть разнообразные способы и устройства, чтобы от одной розетки запитать два или больше прибора – например, тройники и сетевые фильтры. Если же становится ясно, что в определенном месте всегда будут включены несколько устройств, то гораздо удобнее и практичнее сделать подключение розетки от розетки. Правда при этом надо учитывать ряд нюансов, которые будут влиять их нормальную и продолжительную работу.
Содержание
- Плюсы и минусы такого способа подключения
- Выбор способа монтажа проводки
- Наружная проводка
- Скрытая проводка
- Комбинированная проводка
- Порядок монтажа
- Варианты скрытия провода
- Розетки в гипсокартоне
- Каким способом воспользоваться
Плюсы и минусы такого способа подключения
Преимущество одно и оно всегда на виду – удобство использования, ведь не надо больше возиться с переносками, спотыкаться о провода или переживать, что тройник расшатает контакты розетки и выпадет из нее.
Для того, чтобы в полной мере оценить возможные недостатки, надо разобрать устройство и посмотреть какой к нему подключен провод – чаще всего это проводка сечением на 1,5 или 2,5 квадратных миллиметра. Такой кабель свободно выдержит подключение одного бытового устройства мощностью около 2 кВт и с некоторой натяжкой пару таких приборов. Спасает розетки и провода то, что несколько мощных устройств в одну из них подключают достаточно редко – в основном это одно устройство на 1-2 кВт и несколько послабее.
Перед тем, как провести розетку или несколько от уже существующей, обязательно надо учитывать, что каждая последующая из них это соединения проводов, что является дополнительным сопротивлением электрическому току. Даже если подключить одно мощное устройство, но в последнюю розетку, то есть вероятность нагрева предыдущих контактов. Природа же электрического тока такова, что он оказывает на проводку вибрационное воздействие, вследствие чего контакты со временем неизбежно ослабляются. По правилам, на предприятиях все электроконтакты должны проходить ежегодную проверку и подтягивание болтовых соединений.
С другой стороны, в жилых комнатах самое мощное устройство это обычно электрический обогреватель – если он не кустарный, с неизвестно как сделанными контактами, то две последовательно подключенных розетки и их проводка его свободно выдерживают.
Третий вопрос это кухня – именно там обычно собраны самые мощные устройства, в плане потребления электричества: посудомойка, микроволновка, электропечка, духовой шкаф, электрочайник, тостер и прочие, которые «кушают» от 1,5 кВт. «Вешать» их на один провод категорически не рекомендуется, разве что это будут самые слабые из них, например, микроволновка в паре с чайником или тостером.
Выбор способа монтажа проводки
Все способы провести розетку от розетки сводятся к тому, как они будут закреплены – внутри стены, снаружи или из внутренней части «родительской» точки провода будут выводиться наружу. Все остальные рабочие моменты решаются во всех случаях одинаково:
- Толщина проводов. Здесь все просто – они не должны быть тоньше, чем те, что подходят к «главной» розетке. В противном случае, при подключении достаточно мощного потребителя к «дочерней» розетке контакты будут греться – рано или поздно оплавится изоляция проводов, пластиковая крышка или то и другое вместе.
- Дизайн. С точки зрения функционала особых ограничений тут нет – одних устроит «лишь бы работало», а другие подберут «чтобы было красиво и сочеталось друг с другом и с обоями»
- Порядок подключения контактов. На бытовых устройствах их может быть два или три. Если два, то это фаза и ноль – какой провод куда подключать не имеет значения, главное, чтобы они были «посажены» на разные между собой контакты. Когда используется три провода, то это фаза ноль и заземление – его розеточный контакт обычно торчит из корпуса устройства, когда с него снимешь крышку. На контакте надо найти крепежный болт и прикрутить туда заземляющий провод.
- Заземление. Тут все зависит от его наличия – если оно есть в первой розетке, то настоятельно рекомендуется провести заземляющий провод и в следующие точки. При этом надо учитывать требования ПУЭ – кабель должен быть по возможности цельным с отдельными выводами к каждой точке.
коричневый провод — фаза, синий — ноль, желто-зеленый — заземление
В последнем вопросе есть один немаловажный нюанс – изначально провод заземления был подключен напрямую к заземляющим контактам, но подключать его так же, как фазный и нулевой провода – от контакта к контакту – нельзя. Это запрещено, так как в случае отгорания жилы все последующие устройства останутся без защиты. Как сделать правильное соединение показано на рисунке – главный провод откручивается от контакта и на нем делается скрутка.
Отдельная жила идет на первую точку и еще одна – «магистральная» – на все остальные. Она напрямую подключается к последней точке, а предыдущие, как и главная, «вешаются» на нее с помощью отдельных проводов.
Все дальнейшие действия зависят от способа монтажа.
Наружная проводка
В чистом виде встречается в деревянных домах или у поклонников дизайнерского стиля «ретро».
проводка в деревянном доме в медных трубах
В первом случае ее применение обусловлено жесткими требованиями пожарной безопасности, не позволяющими укладывать теоретически воспламеняющиеся предметы в деревянные стены. Дополнительными сложностями здесь могут быть металлические трубы, в которые зачастую заводятся провода чтобы избежать даже теоретически возможного контакта их с поверхностью стены. Это значит, что подключение розетки от другой розетки в таком случае означает практически 100% гарантию необходимости дополнительных слесарных работ.
ретро проводка
Если же проводка просто выполнена в стиле «ретро», то добавлять из одной розетки другую – значит поломать всю создаваемую картину. Весь смысл этого стиля в том, что провода аккуратно подводятся от распределительной коробки к розетке. Зачастую они закручены спиралью и вообще выглядят как ажурное плетение, висящее в воздухе. Чтобы не рисковать испортить весь дизайн, проще, красивее и надежнее потратить чуть больше кабеля, но сделать отдельную розетку от распределительной коробки.
Если же очень нужны две розетки и по какой-то причине от распределительной коробки протянуть провод не получается, то есть другой выход из этой ситуации. Он заключается в расположении новой розетки рядом со старой – на одной диэлектрической подставке. Если у них одинаковый дизайн, то это уже будет сделанный блок розеток – провода в таком случае можно спрятать за их крышками и общая картина не пострадает.
Скрытая проводка
Называется так потому, что ее не видно, так как она спрятана внутри стены, для чего еще при монтаже в бетоне прорезались канавки, в которые укладывались провода. Затем эти канавки (правильно они называются «штробы») заделываются гипсом или цементным раствором, после чего стена красится, на нее клеятся обои или производится другая отделка.
скрытая проводка
Как итог – для того чтобы от уже имеющейся розетки протянуть провод к следующей, в первую очередь надо представить, есть ли возможность вырезать канавку в стене, высверлить отверстие под подрозетник и только тогда выполнять подключение.
Если к новой точке не предполагается подключение мощных нагрузок, то этот способ – как подключить розетку от уже существующей – является наиболее предпочтительным, ведь трудозатраты будут гораздо меньшими, чем при полноценном монтаже от распределительной коробки. Если же не хочется чрезмерно повредить обои, то это решение становится едва ли не единственно возможным.
блок розеток
Если новую точку не обязательно располагать на удалении от старой, то снова поможет монтаж блока розеток. Рядом с первой в стене вырезаются под них отверстия и провод прячется внутри них. Когда применяется такая схема подключения розетки при скрытой проводке, то при должной аккуратности вся отделка остается нетронутой. Размер крышки розетки больше диаметра подрозетника, поэтому даже с учетом вырезания большего отверстия (что нужно для его монтажа), декоративная накладка закрывает собой все следы разрезания стены.
Комбинированная проводка
К результатам такого способа как от одной розетки подключить еще одну или несколько, с известной прохладой относятся профессиональные электрики, особенно если в процессе выполнения монтажа были допущены некоторые недочеты. Но по ряду причин таким образом чаще всего поступают домашние умельцы, если из одной розетки надо подключить еще одну – дополнительную розетку, а стену сверлить нельзя…
Такие ситуации случаются сплошь и рядом, к примеру, на съемных квартирах – хозяева не дают разрешения на перепланировку, а в некоторых домах розетки сделаны только на одной, максимум двух, стенах из четырех и далеко не факт, что они расположены в нужных местах.
Порядок монтажа
Общий принцип, по которому выполняется правильное подсоединение новых точек комбинированным способом, выглядит следующим образом:
- Банально, но необходимо – в квартире отключается электричество (или обесточивается только сама розетка).
- С «родительской» розетки снимается крышка, оценивается, насколько она закрывает отверстие для подрозетника.
- Ослабляются распирающие усики, удерживающие в подрозетнике внутреннюю часть розетки – она извлекается, чтобы был свободный доступ к контактам.
- Подключаются провода, которые будут идти к новой розетке.
- Перед тем, как вставить внутреннюю часть розетки на место, надо проверить, не будет ли ее ограничитель передавливать провод (обычно это стальная прямоугольная пластина всем периметром выступающая за подрозетник). Если так и есть, то надо аккуратно отколоть кусочек подрозетника (а может и стены), чтобы там свободно проходил провод. Далее розетка устанавливается на место.
- На крышке вырезается отверстие по размеру провода, чтобы она хорошо прилегала к стене. Затем корпус прикручивается на место.
- Подключаемый провод опускается к плинтусу и по нему ведется до нужного места, каждые 30-40 см закрепляясь скобами для электропроводки.
В этом видео подробно рассмотрены монтаж и подключение розеток:
Варианты скрытия провода
Способ, которым закрепляется розетка, выбирается в зависимости от того, как планируется ее использование . Новая розетка (для такого типа монтажа выбирается наружная) может быть прикручена к плинтусу или просто оставлена как переноска. Провод, что идет от розетки к плинтусу, можно завести в кабель-канал, но его для этого надо приклеить к обоям или жестко закрепить между крышкой розетки и самим плинтусом.
Если розетка устанавливается всерьез и надолго, то стоит попробовать все-таки полностью скрыть провод. Если на стене есть слой штукатурки толщиной хотя бы 3-4 мм, то в ней надо процарапать канавку для провода – тогда он будет заподлицо с поверхностью и его получится зашпаклевать или закрасить.
Если на стене наклеены обои, то они разрезаются вдоль линии укладки провода и разводятся в стороны. Чтобы их не порвать, шов желательно намочить. Когда обои отклеены от стены, то в ней можно процарапать борозду для провода, уложить его, зашпаклевать и наклеить обои назад.
Розетки в гипсокартоне
Это одновременно скрытая и открытая проводка – к первой она относится так как проводов не видно, а во вторую категорию попадает потому, что провода не замурованы в стену и к ним можно добраться. Кроме стандартных инструментов (если только не устанавливается блок розеток) для монтажа понадобится стальная проволока. Порядок действий следующий:
- Из стены извлекается розетка и подрозетник. К гипсокартону они прикручиваются, так что ломать ничего не придется.
- Стальная проволока заводится в отверстие и просовывается в том направлении, где планируется установка новой розетки. На данном этапе надо просто убедиться, что между плитами гипсокартона, профилями и стеной есть промежуток, в который пройдет гофра с проводом (незащищенную от механических повреждений проводку внутри оставлять нельзя).
- Если проволокой получается нащупать путь, то в нужном месте высверливается отверстие под новый подрозетник. К проволоке прикручивается прочная веревка и она вытаскивается назад.
- Затем с помощью веревки между розетками протягивается гофра, в нее заводятся провода и подключаются.
Если протянуть проволоку между профилями не получается, то применяется более радикальное средство – откручивается лист гипсокартона, протягивается провод и прикручивается назад. Остается зашпаклевать разрушенные стыки и установить розетку. В некоторых случаях вместо того, чтобы откручивать целый лист, в гипсокартоне просто вырезают нужной формы отверстие (предварительно открутив крепежные шурупы), которое потом ставится на место и зашпаклевывается.
Каким способом воспользоваться
Этот вопрос решается в каждом случае индивидуально, в зависимости от того, где расположена «родительская» розетка и какой мощности будет подключаемый прибор. Если это не кухонные розетки для духового шкафа или точки для запитки бойлера со стиральной машинкой, то расчеты и практика показывают, что несколько розеток без проблем будут работать без возникновения перегрузок в сети.
Главное условие при монтаже любых розеток – это хорошие контакты между проводами, что уменьшает общее сопротивление проводки и вероятность ее нагревания в процессе эксплуатации.
Как из одной розетки сделать две: варианты устройства проводки
У вас возникла потребность в дополнительных розетках, а капитальный ремонт пока не планируется? Стоимость вызова профессионального электрика высока, а дешевым мастерам вы не доверяете и хотите решить проблему своими силами?
Перспектива страдать без жизненно необходимой электроточки ближайшие годы в ожидании ремонта совсем не привлекает, ведь верно? Но без должного опыта вам сложно сходу разобраться, как из одной розетки сделать две и с чего начинать?
Мы подскажем, как можно решить эту проблему самостоятельно, не прибегая к вызову электрика, — в статье приведены популярные способы установки дополнительной розетки от уже существующей. Рассмотрены необходимые для монтажа инструменты и соответствующие расходные материалы, что могут пригодиться в процессе электромонтажных работ.
Варианты монтажа дополнительной розетки сопровождаются наглядными фотографиями и содержательными видеорекомендациями.
Содержание статьи:
- Проводить или нет розетку от розетки?
- Варианты обустройства двух розеток из одной
- Правила проведения розетки от розетки
- Правило #1 — правильно прячем провод
- Правило #2 — тонкости установки двойной модели
- Правило #3 — нюансы монтажа новой розетки рядом
- Правило #4 — особенности подключения блока
- Ошибки при проведении розетки
- Выводы и полезное видео по теме
Проводить или нет розетку от розетки?
Вариант с установкой дополнительной розетки поможет избавиться от ссор между членами семьи, которым требуются электроточки для включения различных бытовых приборов.
Особенно остро такая проблема встает на кухне с покупкой новой техники – блендера, мини-комбайна, йогуртницы, хлебопечки, мультиварки и прочих приборов.
Выходит, что существующие розетки уже не справляются со своими обязанностями – их количества физически не хватает для удовлетворения потребностей всех домочадцев. На нашем сайте есть целая статья посвященная выбору и размещению .
Поэтому целесообразным будет решение о проведении дополнительной розетки от уже существующей.
Технически оснащенная кухня нуждается в достаточном количестве точек подключения к электросети. Об этом следует помнить еще на этапе составления дизайн-проекта интерьера будущего помещения
Но тут можно столкнутся с реальной проблемой – не всегда такую задачу возможно выполнить. Существует ряд ограничений, когда категорически нельзя проводить такую модернизацию существующей электросети:
- если нужна розетка для электроплиты;
- когда решили со стиральной машиной подключить бойлер;
- если суммарная мощность приборов более 2,2 кВт.
В домах или квартирах, где владельцы приобрели новую электроплиту взамен старой газовой, потребуется новая розетка для ее подключения. В такой ситуации нельзя от обычной розетки проводить еще одну для включения этого мощного прибора.
Здесь потребуется монтаж отдельной ветки от распределительной коробки, а еще лучше – от щитка. Да и устройство защитного отключения для мощной техники нужно установить. Для того чтобы узнать о правилах подключения розетки для электроплиты рекомендуем прочесть .
Еще один неудачный пример, когда в ванной предусмотрена розетка только для стиральной машины. Но со временем приобрели бойлер. А о том, как правильно расположить и подключить розетки в ванной, читайте .
В одну двойную розетку эти приборы одновременно включать нельзя – проводка может сгореть. Проблематично будет всегда контролировать очередность включения бойлера со стиральной машиной.
Результат перенапряжения сети может быть плачевным – хорошо, когда проблему вовремя обнаружили или сработал автомат и пожара удалось избежать
Также нужно еще до начала работ по установке еще одной розетки просчитать предполагаемую мощность приборов, которые будут одновременно включаться в новый блок розеток.
Часто модернизировать планируют точку подключения к электросети, которую питает провод сечением 1,5-2,5 мм2. Поэтому суммарная мощность приборов может быть чуть более 2 кВт.
Нельзя в такие розетки-соседки, запитанные от одной жилы, включать одновременно посудомоечную машину, духовой шкаф и обогреватель, или бойлер и стиральную машинку
Варианты обустройства двух розеток из одной
Решившись на самостоятельную установку дополнительной электроточки, предстоит изучить, как правильно провести новую розетку от уже существующей розетки, ознакомится с рекомендациями и советами опытных мастеров.
Если нет уверенности в собственных силах, то лучше пригласить электрика, имеющего недюжинный практический опыт за плечами.
При самостоятельном монтаже дополнительной розетки предстоит решить, какой она будет:
- новая точка, удаленная от существующей на пару метров;
- сдвоенная модель вместо одинарной;
- целый блок из 3-6 точек.
В зависимости от индивидуальных потребностей следует выбирать наиболее приемлемый вариант. Если просто не хватает еще одной электроточки для включения всех нужных приборов, то удобнее и проще поставить сдвоенную модель.
Такое решение сможет реализовать даже новичок, не имеющий опыта и особых знаний по электромонтажным работам. Но если с подключением розеток вы сталкиваетесь впервые, рекомендуем для начала изучить следующий материал, в котором приведен пошаговый инструктаж по подключению электроточек.
Для электрической плиты требуется отдельный силовой кабель, способный выдержать большую нагрузку
Когда в комнате переставили диван и поменяли место дислокации телевизора или повзрослевшим детям купили ПК – здесь двойной розеткой не обойдешься. Понадобится поставить дополнительно одну-две новые.
А если потребности в электропотреблении выше, но и толщина сечения провода позволяет – лучше всего поставить блок на 4-6 гнезд. Такое решение сможет гармонично вписаться в интерьер, не нагромождая стены лишними деталями.
Правила проведения розетки от розетки
Разобравшись с нужным , которую предстоит подключить к уже существующей, предстоит приобрести необходимые материалы и взять инструменты, которые пригодятся во время проведения работ. Также предстоит решить вопрос с маскировкой провода.
Правило #1 — правильно прячем провод
Питающий провод, который будет соединять существующую электроточку с устанавливаемой, нужно куда-то спрятать. Это вопрос не только дизайна, но и безопасности эксплуатации помещения.
Хорошо, когда вопрос с еще одной розеткой решается на этапе черновых ремонтных работ. В это время проще всего спрятать провод в штробу
Длина провода и вариант его маскировки будет отличаться в разных случаях. Так, если в помещении скрытая проводка, то прятать предстоит в стену, проделав для этого штробу.
Этот способ крайне затратный – ведь отделка стен может серьезно пострадать. Поэтому в сложных ситуациях, когда в комнате красивый ремонт, выбирают что-то не такое разрушительное – чтобы стены и обои на них не пострадали.
Как вариант, расположить розетку в 15-30 см от пола и спрятать провода в специальный широкий плинтус, который легко поставить своими руками.
Когда же розетка находится над столешницей, здесь удобно использовать двойную модель или разместить рядом вторую. Желательно, чтобы у нее был такой же дизайн и цвет. Провода при таком монтаже замечательно спрячутся за крышками.
Еще один вариант – открытая проводка. Это актуально, если помещение оформлено в стиле ретро – красивое ажурное переплетение проводов, идущих к розеткам и выключателям гармонично перекликается с другими предметами интерьера.
Прятать ничего не нужно, а если понадобиться заменить участок – доступ ничем не затруднен.
Галерея изображений
Фото из
Монтаж проводки открытым способом может выглядеть органично и привлекательно, если речь идет о дизайне комнаты в стиле ретро
На даче или в бане часто красотой жертвуют в угоду безопасности – медные трубы поверх деревянной отделки стен – это вынужденная необходимость
Если две розетки расположить рядом, то можно все провода, соединяющие их между собой, спрятать за крышкой или внутри подрозетника
Утопить провод в стену – самый трудоемкий процесс. Да и плитка, обои или другой тип отделки от этого пострадает. Такой вариант подходит для новостроек и помещений, в которых идут ремонтные работы
Монтаж проводки открытым способом
Медные трубы поверх деревянной отделки
Провода спрятать внутри подрозетника
Провода утоплены в стену
Правило #2 — тонкости установки двойной модели
Быстрый и простой способ одну розетку превратить в две – снять декоративную накладку, открутить старый рабочий механизм, достав его из подрозетника. Вместо этого предстоит поставить новую розетку на 2 рабочих гнезда.
Она отличается от одиночной 2 посадочными местами, которые способны выдержать суммарный ток до 16 А.
Устанавливается такая модель в один подрозетник. От одиночной ее рабочий механизм отличается наличием 2-х клеммников, разведенных в разные стороны.
Механизм двойной розетки визуально отличается от одиночной модели. Главное, чтобы все провода были подключены правильно
Для установки потребуется:
- отключить электричество во всем доме/квартире;
- убедиться, что дом действительно обесточен;
- снять одиночную розетку, освободив провода из ее рабочего механизма;
- обрезать потрепанные концы оголенных проводов;
- снять изоляцию с кончиков около 1 см;
- вставить коричневый фазный провод в правый контакт механизма;
- вставить синий провод ноля в левый контакт;
- вставить желто-зеленый провод земли в центральный заземляющий контакт;
- все контакты рабочего механизма розетки затянуть отверткой;
- провода согнуть гармошкой в подрозетнике и вставить поверх рабочий механизм;
- зафиксировать все саморезами;
- надеть декоративную крышку розетки и затянуть крепежный винт по центру.
После завершения работы по превращению одной розетки в 2 предстоит проверить ее работоспособность. Если все работает, можно включать электричество в квартире/доме. Более подробно о подключении двойной розетки в один подрозетник можно прочесть в этом материале.
Правило #3 — нюансы монтажа новой розетки рядом
Вариант с установкой новой электроточки на определенном расстоянии от существующей потребует больше времени и усилий. Здесь, как и в предыдущем варианте, предстоит обесточить дом/квартиру и только потом приступать к работам.
Чтобы убедиться, что коричневый провод – это фаза, можно использовать специальную индикаторную отвертку. При соприкосновении с фазой ее лампочка загорается
Далее нужно отметить место будущей дислокации. Теперь нужно разобрать старую розетку, вынув ее механизм. Предстоит шлейфовым способом к ней питающий провод для новой розетки.
Крепление проводов осуществляется так же, как и для двойной розетки. Одно отличие – в каждый контакт вставляется по 2 одинаковых провода, а крепления затягиваются отверткой. Чтобы получить шлейф.
Провод земли предстоит раздвоить – присоединить 2 желто-зеленых куска, в месте соединения поставить гильзу, опрессовать пресс-клещами, сверху надеть термоусаживающую трубку для изоляции.
Одно ответвление вставится в механизм старой розетки, а второе – новой. Питающая жила из 3-х проводов наращивается до нужной длины.
Для соединения двух отрезков провода можно использовать специальный колпачок – такое соединение надежное, но для его удаления придется откусить часть провода
В стене делается отверстие для установки подрозетника – стену придется сверлить. Затем питающий провод продевается внутрь, а стакан фиксируется алебастровой смесью. Осталось подключить рабочий механизм розетки – действия такие же, как и для двойной розетки.
После установки декоративной крышки останется спрятать или замаскировать провод, используя наиболее подходящий для этого вариант.
Правило #4 — особенности подключения блока
Когда толщина магистральной жилы достаточная, а потенциальные приборы, которые будут питаться от будущих розеток, обладают умеренной мощностью, можно вместо одной старой розетки соорудить блок розеток в модульной рамке. Это может быть 2 подряд, 3, 4, 5 или 6 штук.
Чтобы придать такому блоку эстетичный вид, покупают декоративную модульную рамку. Причем, цвет и материал можно подобрать согласно личным предпочтениям.
Для подключения этого варианта розеток предстоит сначала обесточить помещение. А лучше и всю квартиру/дом.
При установке блока розеток вместо одной следует четко выдерживать расстояние между ними, чтобы впоследствии декоративная рамка скрыла все лишнее
Затем предстоит проводить действия, аналогичные установке второй розетки. Единственное отличие – расстояние между подрозетником старой и новой электроточки будет минимальное.
Его точные параметры зависят от размера самого стакана и ширины декоративной крышки-накладки.
Подключив последовательно все провода к каждой из новых розеток будущего блока, и присоединив землю к рабочим механизмам, предстоит завершить монтажные работы, аналогично установке второй розетки, находящейся на расстоянии от старой.
После установки важно проверить работоспособность новой розетки – лампочка должна зажечься
Теперь можно включать питание – все работы завершены. При таком варианте проведения еще одной розетки провода прятать не нужно, ведь они все уместятся в подрозетниках. Рекомендуем вам прочесть более подробно о подсоединении блока розеток .
Ошибки при проведении розетки
И хотя проведение дополнительной розетки является несложным заданием, новички часто допускают ошибки. Такое досадное недоразумение, как неправильный монтаж новой электроточки, способно обернуться крупными неприятностями.
Поэтому важно обратить особое внимание на наиболее распространенные ошибки и постараться их избежать.
Во-первых, нужно использовать провод для подключения новой розетки такой же толщины, что у существующей. В противном случае о корректной работе и речи быть не может.
Во-вторых, желательно использовать провода из одного материала – если розетка запитана медным проводом, то вторую от нее следует проводить тоже с применением медного провода такого же диаметра.
Галерея изображений
Фото из
Клеммник винтовой конструкции
Клеммник ВАГО пружинного типа
Колпачок СИЗ для крепления скрутки
Зажим-разветвитель ВАГО
Третья ошибка, допускаемая при самостоятельном подключении – нарушение очередности присоединения проводов. Чтобы этого не произошло, нужно четко разобраться с назначением каждого и правильно определить место его крепления.
Для удобства желательно перед покупкой новой розетки посмотреть старую, разобрав ее. Это делается строго после отключения питания от электросети.
Следует обратить внимание на наличие заземляющего провода – если его нет, что часто встречается в хрущевках и прочих домах старой постройки, то и провод для новой розетки лучше брать без земли. О том, как действовать в случае подключения розетки с заземлением, написано здесь.
Четвертая ошибка – неправильное или недостаточно прочное соединение проводов с рабочим механизмом розетки. Здесь, не имея опыта, достаточно сложно найти баланс.
Поэтому, чтобы минимизировать объем предстоящих работ, желательно провести репетицию по подсоединению проводов на запасном отрезке проводов. Для проверки качества скрепления можно использовать лампочку.
Можно подобрать наиболее удобный вариант скрепления проводов между собой – покупать нужно оригинальные клеммники или другие изделия, опасаясь подделок
Пятая ошибка – когда провод пустили по диагонали. Это недопустимо, да и стандартами проведения электропроводки такое запрещено – провод следует прокладывать вертикально. Хотя домашние умельцы способны еще и не на такое.
Не следует так поступать – если будет проводиться через пару лет косметический ремонт, то обнаружить точное место прохождения провода будет крайне проблематично и его можно случайно повредить.
Закреплять провода в контакте рабочего механизма также следует качественно. Для этого пригодится отвертка
Шестая ошибка, а точнее, неприятность – это неудачно подобранный дизайн декоративной накладки розетки. Этот момент на работоспособности механизма никак не скажется – только будет бросаться в глаза, выбиваясь из общей концепции дизайна комнаты.
Чтобы избежать такого диссонанса, следует заранее подобрать наиболее подходящую модель, способную гармонично вписаться в имеющуюся стилевую композицию.
Выбрать подходящую по цвету и форме модель розетки сейчас несложно – производители наперебой предлагают самые изысканные варианты. Важно, чтобы изделие не оказалось подделкой
Зная основные проблемные места предстоящих работ по установке дополнительной розетки, легче будет избежать распространенных ошибок. Конечно же, эти нюансы не касаются работы профессиональных электриков – мастера с первого раза все сделают правильно.
Выводы и полезное видео по теме
Чтобы из одной розетки получилось две, можно использовать максимально простой способ – поставить двойную модель вместо одиночной. Пошагово этот вариант продемонстрирован в видео:
В видео ролике кратко изложены основные принципы последовательного подключения розеток:
Перед началом работ по проведению розетки следует четко определить, какой провод за что отвечает. Как правильно это сделать, не имея практического опыта, подскажет видео-пособие:
youtube.com/embed/D10ajR0UG9M» allowfullscreen=»allowfullscreen»/>
Видео обзор популярных соединителей, используемых для соединения проводов между собой:
Рассмотрев вопрос о целесообразности проведения новой розетки от уже существующей и приняв решение о ее монтаже, предстоит внимательно отнестись ко всем этапам проведения работ.
В дальнейшем предстоит строго придерживаться правил эксплуатации новой электроточки, чтобы исключить перегрузку линии – нельзя в такие розетки одновременно включать 2 довольно мощных прибора.
Решили самостоятельно подключить из одной или из одной сделать целых две, но не уверенны, что делаете все правильно? Или уже выполняли такую работу и можете дать дельный совет посетителям нашего сайта? Пожалуйста, оставляйте свои комментарии, участвуйте в обсуждениях, задавайте вопросы.
socketserver — Платформа для сетевых серверов — Документация по Python 3.
11.0
Исходный код: Lib/socketserver.py
Модуль socketserver
упрощает задачу написания сетевых серверов.
Наличие: не Emscripten, не WASI.
Этот модуль не работает или недоступен на платформах WebAssembly
wasm32-emscripten
и wasm32-wasi
. Видеть
Платформы WebAssembly для получения дополнительной информации.
Существует четыре основных класса конкретных серверов:
- class socketserver.TCPServer ( server_address , RequestHandlerClass , bind_and_activate = True )
Используется интернет-протокол TCP, обеспечивающий
непрерывные потоки данных между клиентом и сервером.
Если bind_and_activate истинно, конструктор автоматически пытается
вызватьserver_bind()
и
сервер_активировать()
. Остальные параметры передаются
базовый классBaseServer
.
- class socketserver. UDPServer ( server_address , RequestHandlerClass , bind_and_activate = True )
При этом используются дейтаграммы, представляющие собой дискретные пакеты информации, которые могут
прийти не по порядку или потеряться в пути. Параметры
то же, что и дляTCPServer
.
- class socketserver.UnixStreamServer ( server_address , RequestHandlerClass , bind_and_activate = True )
- class socketserver.UnixDatagramServer ( server_address , RequestHandlerClass , bind_and_activate = True )
Эти более редко используемые классы аналогичны TCP и
классы UDP, но используют сокеты домена Unix; они недоступны на
платформы, отличные от Unix. Параметры те же, что и для
TCP-сервер
.
Эти четыре класса обрабатывают запросы синхронно ; каждый запрос должен быть
завершается до того, как может быть запущен следующий запрос. Это не подходит, если каждый
запрос занимает много времени, потому что требует много вычислений,
или потому, что он возвращает много данных, которые клиент обрабатывает медленно.
решение состоит в том, чтобы создать отдельный процесс или поток для обработки каждого запроса; в
ForkingMixIn
и ThreadingMixIn
смешанные классы могут быть использованы для
поддерживать асинхронное поведение.
Для создания сервера требуется несколько шагов. Во-первых, вы должны создать запрос
класс обработчика путем создания подкласса класса BaseRequestHandler
и
переопределение его метода handle()
;
этот метод будет обрабатывать входящие
Запросы. Во-вторых, вы должны создать экземпляр одного из серверных классов, передав его
адрес сервера и класс обработчика запросов. Рекомендуется использовать
сервер в с
утверждение. Затем позвоните в
handle_request()
или
serve_forever()
метод объекта сервера для
обрабатывать один или несколько запросов. Наконец, вызовите server_close()
чтобы закрыть сокет (если вы не использовали оператор с оператором
).
При наследовании от ThreadingMixIn
для поведения резьбового соединения,
вы должны явно объявить, как вы хотите, чтобы ваши потоки вели себя при резком
неисправность. Класс ThreadingMixIn
определяет атрибут
daemon_threads , что указывает, должен ли сервер ждать
прекращение потока. Вы должны явно установить флаг, если хотите
потоки ведут себя автономно; по умолчанию False
, что означает, что
Python не завершится, пока все потоки, созданные ThreadingMixIn
, не будут
вышел.
Классы сервера имеют одни и те же внешние методы и атрибуты, независимо от того, что
сетевой протокол, который они используют.
Примечания по созданию сервера
На диаграмме наследования есть пять классов, четыре из которых представляют
синхронных серверов четырех типов:
+------------+ | Базовый сервер | +------------+ | в +-----------+ +----+ | TCP-сервер |------->| UnixStreamServer | +-----------+ +----+ | в +-----------+ +--------------------+ | UDP-сервер |------->| UnixDatagramServer | +-----------+ +--------------------+
Обратите внимание, что UnixDatagramServer
происходит от UDPServer
, а не от
UnixStreamServer
— единственная разница между IP и Unix
потоковый сервер — это семейство адресов, которое просто повторяется как в Unix,
серверные классы.
- class socketserver.ForkingMixIn
- class socketserver.ThreadingMixIn
Могут быть созданы разветвленные и многопоточные версии каждого типа сервера
используя эти смешанные классы. Например,ThreadingUDPServer
создается следующим образом:класс ThreadingUDPServer(ThreadingMixIn, UDPServer): проходить
Сначала идет смешанный класс, так как он переопределяет метод, определенный в
UDP-сервер
. Установка различных атрибутов также изменяет
поведение базового механизма сервера.ForkingMixIn
и упомянутые ниже классы Forking
доступно только на платформах POSIX, поддерживающихfork()
.socketserver.ForkingMixIn.server_close()
ждет, пока все дочерние
процессы завершены, за исключением случаев, когда
атрибут socketserver.ForkingMixIn.block_on_close
имеет значение false.сокетсервер. ThreadingMixIn.server_close()
ждет, пока все не демоны
потоки завершены, за исключением случаев, когда
Атрибут socketserver.ThreadingMixIn.block_on_close
имеет значение false. Использовать
демонические потоки, установив
ThreadingMixIn.daemon_threads От
доTrue
, чтобы не ждать, пока потоки
полный.Изменено в версии 3.7:
socketserver.ForkingMixIn.server_close()
и
socketserver.ThreadingMixIn.server_close()
теперь ждет, пока все
дочерние процессы и недемонические потоки завершены.
Добавить новыйsocketserver.ForkingMixIn.block_on_close
класс
атрибут для подписки на поведение до версии 3.7.
- class socketserver.ForkingTCPServer
- class socketserver.ForkingUDPServer
- class socketserver.ThreadingTCPServer
- class socketserver.ThreadingUDPServer
Эти классы предварительно определены с помощью смешанных классов.
Чтобы реализовать службу, вы должны получить класс из BaseRequestHandler
и переопределить его метод handle()
.
Затем вы можете запускать различные версии
сервис, объединив один из классов сервера с вашим обработчиком запросов
учебный класс. Класс обработчика запроса должен отличаться для дейтаграммы или потока.
Сервисы. Это можно скрыть с помощью подклассов обработчиков
StreamRequestHandler
или DatagramRequestHandler
.
Конечно, надо думать головой! Например, нет смысла
используйте разветвленный сервер, если служба содержит состояние в памяти, которое может быть
изменены разными запросами, так как модификации в дочернем процессе
никогда не достигнет начального состояния, хранящегося в родительском процессе и переданного в
каждый ребенок. В этом случае вы можете использовать потоковый сервер, но вы, вероятно,
должны использовать блокировки для защиты целостности общих данных.
С другой стороны, если вы создаете HTTP-сервер, на котором хранятся все данные
внешне (например, в файловой системе) синхронный класс будет
по существу сделать сервис «глухим», пока обрабатывается один запрос —
что может быть в течение очень долгого времени, если клиент медленно получает все данные, которые он
просил. Здесь подходит многопоточный или разветвленный сервер.
В некоторых случаях может быть целесообразно обрабатывать часть запроса синхронно,
но закончить обработку в разветвленном дочернем элементе в зависимости от данных запроса. Этот
может быть реализовано с использованием синхронного сервера и выполнения явного форка в
класс обработчика запросов метод handle()
.
Другой подход к обработке нескольких одновременных запросов в среде
который не поддерживает ни потоки, ни fork()
(или где они слишком
дорогим или неподходящим для услуги) заключается в том, чтобы поддерживать явную таблицу
частично завершенные запросы и использовать селекторов
, чтобы решить, какие
запрос для работы над следующим (или для обработки нового входящего запроса). Это
особенно важно для потоковых сервисов, где каждый клиент потенциально может быть
подключен в течение длительного времени (если нельзя использовать потоки или подпроцессы). Видеть
asyncore
для другого способа управления этим.
Объекты сервера
- class socketserver.BaseServer ( server_address , RequestHandlerClass )
Это надкласс всех объектов сервера в модуле. Он определяет
интерфейс, приведенный ниже, но не реализует большинство методов, что
делается в подклассах. Оба параметра хранятся в соответствующих
server_address
иRequestHandlerClass
атрибуты.- файлно()
Возвращает целочисленный дескриптор файла для сокета, на котором находится сервер.
слушаю. Эта функция чаще всего передается вселекторов
, в
разрешить мониторинг нескольких серверов в одном процессе.
- handle_request()
Обработка одного запроса. Эта функция вызывает следующие методы в
порядок:get_request()
,verify_request()
и
процесс_запрос()
. Если предоставленный пользователем
handle()
метод
класс обработчика вызывает исключение, метод сервераhandle_error()
будет называться. Если запрос не получен в течениетайм-аут
секунд, будет вызваноhandle_timeout()
иhandle_request()
вернется.
- serve_forever ( poll_interval = 0,5 )
Обрабатывать запросы до явного запроса
shutdown()
. Опрос для
выключение каждые poll_interval секунды.
Игнорирует атрибут тайм-аута
также вызываетservice_actions()
, который может использоваться подклассом или миксином
для предоставления действий, специфичных для данной службы. Например,
Класс ForkingMixIn
используетservice_actions()
для очистки зомби
дочерние процессы.Изменено в версии 3.3: Добавлен вызов
service_actions
в методserve_forever
.
- service_actions()
Вызывается в цикле
serve_forever()
. Этот метод может быть
переопределяется подклассами или классами примесей для выполнения действий, специфичных для
заданная служба, например действия по очистке.Новое в версии 3.3.
- выключение()
Скажите циклу
serve_forever()
остановиться и подождать, пока он не завершится.
shutdown()
должен быть вызван, покаserve_forever()
работает в
другой поток, иначе он заблокируется.
- server_close()
Очистить сервер. Может быть переопределен.
- address_family
Семейство протоколов, к которым принадлежит сокет сервера.
Распространенными примерами являютсяsocket.AF_INET
иsocket.AF_UNIX
.
- Рекестхандлеркласс
Пользовательский класс обработчика запросов; создается экземпляр этого класса
для каждого запроса.
- адрес_сервера
Адрес, который прослушивает сервер. Формат адресов меняется
в зависимости от семейства протоколов;
см. документацию для модуляsocket
для деталей. Для интернет-протоколов это кортеж, содержащий строку, дающую
адрес и целочисленный номер порта: например,('127.0.0.1', 80)
.
- розетка
Объект сокета, на котором сервер будет прослушивать входящие запросы.
Классы сервера поддерживают следующие переменные класса:
- allow_reuse_address
Разрешит ли сервер повторное использование адреса. По умолчанию это
False
и может быть установлен в подклассах для изменения политики.
- request_queue_size
Размер очереди запросов. Если требуется много времени для обработки одного
запрос, любые запросы, поступающие в то время, когда сервер занят, помещаются в
очередь, доrequest_queue_size
запросов. Как только очередь заполнится,
дальнейшие запросы от клиентов получат ошибку «Отказано в соединении». По умолчанию
значение обычно равно 5, но оно может быть переопределено подклассами.
- сокет_тип
Тип сокета, используемого сервером;
сокет.SOCK_STREAM
и
socket.SOCK_DGRAM
— это два общих значения.
- тайм-аут
Длительность тайм-аута, измеряется в секундах или
Нет
, если тайм-аут не установлен.
желанный. Еслиhandle_request()
не получает входящих запросов в течение
тайм-аут, вызывается метод handle_timeout() .
Существуют различные методы сервера, которые могут быть переопределены подклассами базовых
классы серверов, такие какTCPServer
; эти методы бесполезны для внешних
пользователи объекта сервера.- Finish_request( запрос , client_address )
Фактически обрабатывает запрос, создавая экземпляр
RequestHandlerClass
и
вызывая его методhandle()
.
- получить_запрос()
Должен принять запрос от сокета и вернуть 2-кортеж, содержащий новый
объект сокета, который будет использоваться для связи с клиентом, и клиентский
адрес.
- handle_error ( запрос , client_address )
Эта функция вызывается, если
handle()
метод экземпляраRequestHandlerClass
вызывает
исключение. Действие по умолчанию — распечатать трассировку до
стандартная ошибка и продолжить обработку дальнейших запросов.Изменено в версии 3.6: теперь вызывается только для исключений, полученных из
Exception
учебный класс.
- handle_timeout()
Эта функция вызывается, когда для атрибута
timeout
установлено значение
значение отличное отНет
и время ожидания истекло без
поступающие запросы. Действие по умолчанию для разветвления серверов:
для сбора состояния любых дочерних процессов, которые завершились, в то время как
на многопоточных серверах этот метод ничего не делает.
- process_request( запрос , client_address )
Вызывает
finish_request()
для создания экземпляра
Класс Обработчиков Запросов
. При желании эта функция может создать новый процесс
или поток для обработки запроса;ForkingMixIn
и
Классы ThreadingMixIn
делают это.
- server_activate()
Вызывается конструктором сервера для активации сервера. Поведение по умолчанию
для TCP-сервера просто вызываетlisten()
на сокете сервера. Может быть переопределен.
- server_bind()
Вызывается конструктором сервера для привязки сокета к нужному адресу.
Может быть переопределен.
- verify_request ( запрос , client_address )
Должен возвращать логическое значение; если значение равно
True
, запрос будет
быть обработан, и если этоFalse
, запрос будет отклонен. Этот
Функция может быть переопределена для реализации контроля доступа к серверу.
реализация по умолчанию всегда возвращаетTrue
.
Изменено в версии 3. 6: Добавлена поддержка протокола менеджера контекста. Выход из
диспетчер контекста эквивалентен вызовуserver_close()
.
Объекты обработчика запросов
- класс сокетсервер.BaseRequestHandler
Это надкласс всех объектов обработчиков запросов. Он определяет
интерфейс, приведенный ниже. Конкретный подкласс обработчика запросов должен
определить новый методhandle()
и может переопределить любой из
другие методы. Новый экземпляр подкласса создается для каждого
запрос.- настройка()
Вызывается перед методом
handle()
для выполнения любых действий по инициализации
требуется. Реализация по умолчанию ничего не делает.
- ручка()
Эта функция должна выполнять всю работу, необходимую для обслуживания запроса.
реализация по умолчанию ничего не делает. Несколько атрибутов экземпляра
доступным для него; запрос доступен какself. request
; клиент
адрес какself.client_address
; и экземпляр сервера как
self.server
, если ему требуется доступ к информации о сервере.Тип
self.request
отличается для дейтаграммы или потока
Сервисы. Для потоковых службself.request
— это объект сокета; за
сервисы дейтаграмм,self.request
— это пара строки и сокета.
- закончить()
Вызывается после метода
handle()
для выполнения любых действий по очистке
требуется. Реализация по умолчанию ничего не делает. Еслинастройка()
вызывает исключение, эта функция не будет вызываться.
- класс сокетсервер.StreamRequestHandler
- класс socketserver.DatagramRequestHandler
Эти подклассы
BaseRequestHandler
переопределяют
установка()
изавершение()
методов и предоставить атрибутыself. rfile
иself.wfile
.
self.rfile
иатрибуты self.wfile
могут быть
чтение или запись, соответственно, для получения данных запроса или возврата данных
клиенту.Атрибуты
rfile
обоих классов поддерживают
io.BufferedIOBase
читаемый интерфейс и
DatagramRequestHandler.wfile
поддерживает
io.BufferedIOBase
интерфейс с возможностью записи.Изменено в версии 3.6:
StreamRequestHandler.wfile
также поддерживает
io.BufferedIOBase
интерфейс с возможностью записи.
Примеры
socketserver.TCPServer
Пример
Это серверная часть:
импорт сокетсервера класс MyTCPHandler (socketserver.BaseRequestHandler): """ Класс обработчика запросов для нашего сервера. Он создается один раз при подключении к серверу и должен переопределить метод handle() для реализации связи с клиент. """ Деф дескриптор (сам): # self.request - это сокет TCP, подключенный к клиенту self.data = self.request.recv(1024).strip() print("{} написал:".format(self.client_address[0])) печать (самостоятельные данные) # просто отправьте обратно те же данные, но в верхнем регистре self.request.sendall(self.data.upper()) если __name__ == "__main__": ХОСТ, ПОРТ = "localhost", 9999 # Создаем сервер, привязываемся к localhost по порту 9999 с socketserver.TCPServer((HOST, PORT), MyTCPHandler) в качестве сервера: # Активировать сервер; это будет продолжаться до тех пор, пока вы # прерываем программу с помощью Ctrl-C сервер.serve_forever()
Альтернативный класс обработчика запросов, использующий потоки (файлоподобные
объекты, которые упрощают связь, предоставляя стандартный файловый интерфейс):
класс MyTCPHandler (socketserver.StreamRequestHandler): Деф дескриптор (сам): # self. rfile — файлоподобный объект, созданный обработчиком; # теперь мы можем использовать, например, readline() вместо необработанных вызовов recv() self.data = self.rfile.readline().strip() print("{} написал:".format(self.client_address[0])) печать (самостоятельные данные) # Аналогично, self.wfile — это файлоподобный объект, используемый для обратной записи # к клиенту self.wfile.write(self.data.upper())
Разница в том, что вызов readline()
во втором обработчике вызовет
recv()
несколько раз, пока не встретит символ новой строки, в то время как
одиночный вызов recv()
в первом обработчике просто вернет то, что было отправлено
от клиента за один вызов sendall()
.
Это клиентская сторона:
импортная розетка импорт системы ХОСТ, ПОРТ = "localhost", 9999 данные = " ".join(sys.argv[1:]) # Создаем сокет (SOCK_STREAM означает сокет TCP) с socket.socket(socket. AF_INET, socket.SOCK_STREAM) в качестве носка: # Подключиться к серверу и отправить данные sock.connect((ХОСТ, ПОРТ)) sock.sendall (байты (данные + "\n", "utf-8")) # Получение данных с сервера и завершение работы получено = ул(sock.recv(1024), "utf-8") print("Отправлено: {}".формат(данные)) print("Получено: {}".format(получено))
Вывод примера должен выглядеть примерно так:
Сервер:
$ Python TCPServer.py 127.0.0.1 пишет: b'привет мир с TCP' 127.0.0.1 пишет: b'питон хорош'
Клиент:
$ python TCPClient.py привет, мир с TCP Отправлено: привет мир с TCP Получено: ПРИВЕТ МИР С TCP $ python TCPClient.py python хорош Отправлено: питон хорош Получено: ПИТОН ХОРОШИЙ
socketserver.UDPServer
Пример
Это серверная часть:
импорт сокетсервера класс MyUDPHandler (socketserver.BaseRequestHandler): """ Этот класс работает аналогично классу обработчика TCP, за исключением того, что self. request состоит из пары данных и клиентского сокета, и поскольку нет подключения адрес клиента должен быть указан явно при отправке данных обратно через sendto(). """ Деф дескриптор (сам): данные = self.request[0].strip() сокет = self.request[1] print("{} написал:".format(self.client_address[0])) печать (данные) socket.sendto(data.upper(), self.client_address) если __name__ == "__main__": ХОСТ, ПОРТ = "localhost", 9999 с socketserver.UDPServer((HOST, PORT), MyUDPHandler) в качестве сервера: сервер.serve_forever()
Это клиентская сторона:
импортная розетка импорт системы ХОСТ, ПОРТ = "localhost", 9999 данные = " ".join(sys.argv[1:]) # SOCK_DGRAM — это тип сокета, используемый для сокетов UDP. носок = сокет.сокет (сокет.AF_INET, сокет.SOCK_DGRAM) # Как видите, здесь нет вызова connect(); UDP не имеет соединений. # Вместо этого данные отправляются получателю напрямую через sendto(). sock.sendto(байты(данные + "\n", "utf-8"), (ХОСТ, ПОРТ)) получено = ул(sock. recv(1024), "utf-8") print("Отправлено: {}".формат(данные)) print("Получено: {}".format(получено))
Выходные данные примера должны выглядеть точно так же, как в примере с сервером TCP.
Асинхронные миксины
Для создания асинхронных обработчиков используйте ThreadingMixIn
и
ForkingMixIn
классов.
Пример для класса ThreadingMixIn
:
импортная розетка импорт потоков импортировать сервер сокетов класс ThreadedTCPRequestHandler (socketserver.BaseRequestHandler): Деф дескриптор (сам): данные = ул (self.request.recv (1024), 'ascii') cur_thread = threading.current_thread() ответ = байты ("{}: {}". формат (cur_thread.name, данные), 'ascii') self.request.sendall(ответ) класс ThreadedTCPServer (socketserver.ThreadingMixIn, socketserver.TCPServer): проходить def client(ip, порт, сообщение): с socket.socket(socket.AF_INET, socket.SOCK_STREAM) в качестве носка: sock. connect((ip, порт)) sock.sendall (байты (сообщение, 'ascii')) ответ = ул(sock.recv(1024), 'ascii') print("Получено: {}".format(ответ)) если __name__ == "__main__": # Порт 0 означает выбор произвольного неиспользуемого порта ХОСТ, ПОРТ = "localhost", 0 сервер = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler) с сервером: ip, порт = server.server_address # Запускаем поток с сервером -- тогда этот поток запустит один # больше потока для каждого запроса server_thread = threading.Thread (цель = server.serve_forever) # Выход из потока сервера, когда основной поток завершится server_thread.daemon = Истина server_thread.start() print("Серверный цикл выполняется в потоке:", server_thread.name) клиент(ip, порт, "Hello World 1") клиент(ip, порт, "Hello World 2") клиент(ip, порт, "Hello World 3") сервер.shutdown()
Вывод примера должен выглядеть примерно так:
$ Python ThreadedTCPServer. py Цикл сервера, работающий в потоке: Thread-1 Получено: Thread-2: Hello World 1 Получено: Тема-3: Привет, мир 2 Получено: Тема-4: Привет, мир 3
Класс ForkingMixIn
используется таким же образом, за исключением того, что сервер
будет порождать новый процесс для каждого запроса.
Доступно только на платформах POSIX, поддерживающих fork()
.
руководств по программированию на Python
Добро пожаловать в учебник по сокетам в Python 3. Нам предстоит многое рассказать, так что давайте сразу приступим. Библиотека socket
является частью стандартной библиотеки, так что она у вас уже есть.
импортная розетка # создаем сокет # AF_INET == ipv4 # SOCK_STREAM == TCP s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Переменная s
— это наш сокет TCP/IP. AF_INET относится к семейству или домену, это означает ipv4, в отличие от ipv6 с AF_INET6. SOCK_STREAM означает, что это будет сокет TCP, который является нашим типом сокета. TCP означает, что он будет ориентирован на соединение, а не без соединения.
Итак, что такое сокет? Сам сокет — это всего лишь одна из конечных точек связи между программами в некоторой сети.
Сокет будет привязан к какому-то порту на каком-то хосте. Как правило, у вас будет сущность или программа клиентского или серверного типа.
В случае сервера
вы привяжете сокет к какому-то порту на сервере (localhost). В случае клиента
вы подключите сокет к этому серверу на том же порту, который использует серверный код.
Давайте сделаем этот код на стороне сервера:
s.bind((socket.gethostname(), 1234))
Для IP-сокетов адрес, к которому мы привязываемся, представляет собой кортеж из имени хоста и порта количество.
Теперь, когда мы это сделали, давайте прослушивать входящие соединения. Мы можем обрабатывать только одно соединение в данный момент времени, поэтому мы хотим предусмотреть какую-то очередь на тот случай, если мы получим небольшой всплеск. Если кто-то попытается подключиться, пока очередь заполнена, ему будет отказано.
Давайте составим очередь из 5:
s.listen(5)
А теперь просто слушаем!
пока верно: # теперь наша конечная точка знает о ДРУГОЙ конечной точке. clientsocket, адрес = s.accept() print(f"Соединение с {адреса} установлено.")
Полный код для server.py
:
import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((сокет.gethostname(), 1234)) с.слушай(5) пока верно: # теперь наша конечная точка знает о ДРУГОЙ конечной точке. clientsocket, адрес = s.accept() print(f"Соединение с {адреса} установлено.")
Теперь нам нужно сделать код нашего клиента!
импортная розетка s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Теперь, поскольку это клиент, а не , связывающий
, мы собираемся подключить
.
s.connect((socket.gethostname(), 1234))
В более традиционном смысле клиент и сервер фактически не будут располагаться клиентом и сервером на одной машине. Если вы хотите, чтобы две программы общались друг с другом локально, вы могли бы сделать это, но обычно ваш клиент, скорее всего, будет подключаться к какому-то внешнему серверу, используя свой общедоступный IP-адрес, а не 9.0008 сокет.gethostname() . Вместо этого вы передадите строку IP.
Полный код client.py
до этого момента:
сокет импорта s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((socket.gethostname(), 1234))
Хорошо, теперь мы просто запускаем оба. Сначала запустим наш сервер:
python3 server.py
python3 client.py
На нашем сервере мы должны увидеть:
Connection from ('192.168.86.34', 54276).
Однако после этого наш клиент просто завершает работу, потому что он завершил свою работу.
Итак, мы установили соединение, и это здорово, но мы действительно хотим отправлять сообщения и/или данные туда и обратно. Как мы это делаем?
Наши сокеты могут отправлять
и получать
данные. Эти методы обработки данных имеют дело с буферами. Буферы создаются фрагментами данных определенного фиксированного размера. Посмотрим, что в действии:
Внутри server.py
, добавим:
clientsocket.send(bytes("Привет!!!","utf-8"))
В наш цикл while
, так что наш полный код для server.py
становится:
импортный сокет s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((сокет.gethostname(), 1234)) с.слушай(5) пока верно: # теперь наша конечная точка знает о ДРУГОЙ конечной точке. clientsocket, адрес = s.accept() print(f"Соединение с {адреса} установлено.") clientsocket.send(bytes("Привет!!!","utf-8"))
Итак, мы отправили данные, теперь хотим их получить. Итак, в нашем client.py
мы сделаем:
msg = s.recv(1024)
Это означает, что наш сокет будет пытаться получать данные в буфере размером 1024 байта за раз.
Тогда давайте сделаем что-нибудь простое с полученными данными, например, распечатаем их!
print(msg.decode("utf-8"))
Круто, теперь наш полный код client.py
:
import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((сокет.gethostname(), 1234)) сообщение = s.recv(1024) print(msg.decode("utf-8"))
Теперь запустите server.py
и затем client.py
. Наш server.py
показывает:
Соединение с ('192.168.86.34', 55300) установлено.
В то время как наш client.py
теперь показывает:
Привет!!!
И выходит. Итак, давайте немного скорректируем этот буфер, изменив client.py
recv
на 8 байт за раз.
client. py
сокет импорта s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((сокет.gethostname(), 1234)) сообщение = s.recv(8) print(msg.decode("utf-8"))
Теперь повторно запустите client.py
, и вместо этого вы увидите что-то вроде:
Эй,
Не выглядишь так горячо! Таким образом, вы можете понять, что буквально добавляет до 8 символов, поэтому каждый байт является символом. Почему бы… не вернуться в 1024? или какое-то массивное число. Зачем вообще работать в буферах?
В какой-то момент, независимо от того, какое число вы установите, многие приложения, использующие сокеты, в конечном итоге захотят отправить некоторое количество байтов, намного превышающее размер буфера. Вместо этого нам, вероятно, нужно построить нашу программу с нуля, чтобы фактически принимать все сообщения в порциях буфера, даже если обычно это только одна порция. Мы делаем это в основном для управления памятью. Вычисления в зависимости от приложения могут различаться, и вы можете позже поиграть с размером буфера. Единственное, что я могу с уверенностью обещать, это то, что вам нужно с самого начала планировать работу с коммуникациями по частям.
Что мы можем сделать для нашего клиента? Цикл , в то время как
звучит так, как будто он может соответствовать всем требованиям. Данные будут поступать в виде потока, поэтому на самом деле обработка этого так же проста, как изменение нашего файла client.py
на:
import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((сокет.gethostname(), 1234)) пока верно: сообщение = s.recv(8) print(msg.decode("utf-8"))
Итак, на данный момент мы будем получать эти данные и печатать их кусками. Если мы запустим client.py
теперь мы видим:
Привет э!!!
Вы также должны принять к сведению, что наш client.py
больше не завершается. Это соединение сейчас остается открытым. Это связано с нашим циклом while
. Мы можем использовать . close()
в сокете, чтобы закрыть его, если захотим. Мы можем сделать это либо на сервере, либо на клиенте… или на обоих. Вероятно, неплохо быть готовым к тому, что соединение прервется или будет закрыто по какой-либо причине. Например, мы могли бы закрыть соединение после отправки нашего сообщения на сервер:
server.py
сокет импорта s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((сокет.gethostname(), 1234)) с.слушай(5) пока верно: # теперь наша конечная точка знает о ДРУГОЙ конечной точке. clientsocket, адрес = s.accept() print(f"Соединение с {адреса} установлено.") clientsocket.send(bytes("Привет!!!","utf-8")) clientsocket.close()
Однако, если мы запустим это, мы увидим наш client.py
, а затем отправим кучу ничего, потому что данные, которые он получает, ну, ну, ничего. Пусто. 0 байт, но мы по-прежнему просим его распечатать то, что он получает, даже если это ничего! Мы могли бы это исправить:
client. py
сокет импорта
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((сокет.gethostname(), 1234))
полное_сообщение = ''
пока верно:
сообщение = s.recv(8)
если лен (сообщение)Итак, теперь мы буферизируем сообщение целиком. Когда мы достигаем конца, который мы отмечаем, получая 0 байтов, мы прерываем, а затем возвращаем сообщение. На этом заканчивается
client.py
. Теперь клиент, вероятно, хочет также поддерживать соединение. Как мы можем это сделать? Еще, в то время как цикл
может помочь.
клиент.py
импортная розетка
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((сокет.gethostname(), 1234))
пока верно:
полное_сообщение = ''
пока верно:
сообщение = s.recv(8)
если лен (сообщение)Конечно, мы, вероятно, должны еще раз убедиться, что
full_msg
имеет что-то существенное, прежде чем распечатать его:
клиент.py
импортная розетка
s = socket.