Как самому подключить розетку — «Петрович.Знает»
Вы сделали дома перестановку, и теперь телевизор не достает до розетки. А может быть, старая розетка сломалась или не вписывается в свежий интерьер. В любом случае вам предстоит ее замена, перенос или новая установка. Опасную работу с электрикой нужно проводить под руководством профессионала. Андей Хрисанов — эксперт индивидуального управления ремонтно-строительными работами — научит вас быстро и безопасно подключать розетки самостоятельно.
Техника безопасности
Когда дело касается электрики, нельзя пренебрегать техникой безопасности. В случае с установкой розетки придерживайтесь следующих правил:
- Проводите монтаж в светлое время суток, а если света недостаточно, используйте фонарик.
- Перед началом любых электромонтажных работ обесточьте квартиру. Выключите главный автомат электрощита у входной двери, а еще лучше — отключите вводной автомат, который находится в подъезде.
- Проверьте индикаторной отверткой, есть ли ток в розетках. Для этого вставьте ее в розетку: сначала в одно отверстие, а потом в другое. Если индикатор загорится, значит в сети есть ток и вы отключили что-то не то.
- Даже обесточенные провода кладите так, чтобы они случайно не коснулись друг друга, а каждую скрутку закрывайте изолентой.
- Работайте в электрозащитных перчатках даже при выключенном электричестве.
- Используйте инструменты с прорезиненными рукоятками, которые не проводят ток.
- Помните, что прямые соединения алюминиевых и медных кабелей запрещены, потому что они могут вызвать короткое замыкание и пожар. Чтобы этого не случилось, соединяйте их только через клемму.
- Устанавливать розетку самостоятельно можно, только когда в квартире уже стоит распределительный щит.
Работая с электричеством, важно не запутаться в проводах. В современных домах к розетке ведут 3 кабеля:
- Фаза (чаще коричневый) — проводник, по которому ток приходит к электроприбору.
- Ноль (чаще синий) — проводник, по которому ток движется в обратном направлении.
- Заземление (чаще желто-зеленый) — проводник без напряжения, который защищает от удара током. В старых домах часто нет заземления, тогда розетку подключают на ноль. Но электрики рекомендуют установить устройство защитного отключения (УЗО) или полностью заменить проводку.
Если в вашей розетке цвета проводов фазы, ноля и заземления другие, можно определить, кто есть кто, с помощью индикаторной отвертки. Заземление обычно находится по центру или заметно в стороне от парных винтов фазы и ноля, так что определять его отверткой не надо. Включите электричество и по очереди коснитесь отверткой двух оставшихся контактов. Индикатор загорится при прикосновении к фазе, значит, другой контакт — это ноль.
Инструменты и расходники
Собираетесь ли вы установить розетку туда, где ее раньше не было, или на место старой — неважно. Набор инструментов будет отличаться незначительно. Вам понадобятся:
- Розетка. Для ванной комнаты нужно выбирать розетки с крышкой. Маркировка влагозащиты должна быть не ниже IP44: она означает, что розетка не сломается, если на нее попадут брызги; розетки с маркировкой IP55 переносят струю воды, а IP65 полностью защищены от песка, пыли и попадания любого количества осадков
- Индикаторная отвертка, чтобы проверить наличие тока в сети до начала работы и исправность новой розетки, когда закончите ее установку.
- Крестовая и плоская отвертка для монтажа.
- Подрозетник (монтажная коробка), подходящая под размер розетки. Ее выбирают, исходя из материала стен. Для сплошных стен из бетона или кирпича подходят обычные подрозетники, а для гипсокартона нужна коробка с зажимными лапками, чтобы она надежно держалась в полой стене. Подрозетники могут быть рассчитаны сразу на несколько розеток.
- Канцелярский нож для зачистки проводов или специальный нож для снятия изоляции.
- Лазерный или ручной уровень для разметки.
- Кусачки и плоскогубцы для обрезки, выпрямления и скрутки проводов.
- Самозажимные пружинные клеммы для соединения жил кабеля.
- Перфоратор и алмазная коронка D68, если нужно сделать новое отверстие под розетку. Диаметр 68 мм — стандартный для современных подрозетников.
- Саморезы 3,5 мм для крепления розетки к подрозетнику.
- Силовой кабель из 3 жил с сечением 2,5 кв. мм для переноса розетки или на случай, если вы хотите установить их сразу несколько в ряд. На 4 розетки понадобится около метра этого кабеля.
Как заменить старую розетку на новую
Демонтируем старую розетку
- Отверткой выкрутите винт, который находится в центре розетки, чтобы снять ее лицевую панель (крышку). Под крышкой находится каркас розетки, прикрепленный к подрозетнику. Иногда его внутри нет, и каркас держится в отверстии за счет металлических лапок по бокам.
- Убедитесь, что в сети нет тока, коснувшись индикаторной отверткой всех контактов по очереди. Если индикатор не зажегся, можно продолжать работу. Выкрутите винты, которые соединяют каркас с подрозетником, чтобы получить доступ к проводам. Открутите винты от клемм, которые держат провода, и полностью снимите каркас с подрозетником.
- Если розетка на этом месте вам больше не нужна, то выпрямите плоскогубцами концы проводов, обмотайте их изолентой и спрячьте все коммуникации в стену так, чтобы фаза не соприкасалась с нолем. Заполните отверстие монтажной пеной, срежьте лишнее, когда она высохнет, и зашпатлюйте этот участок перед его финишной отделкой.
Ставим новую розетку на место старой
- У подрозетников на задней стенке обычно есть перфорированная разметка под отверстие, в которое продевают кабель. Выдавите пластик в новом подрозетнике пальцем или, если перфорация недостаточно глубокая, вырежьте его канцелярским ножом. Вставьте в отверстие в стене новый подрозетник и проденьте через отверстие провода. Подрозетник должен быть надежно закреплен в стене, поэтому его клеят на гипс или алебастр. Мастера рекомендуют гипсовый клей: он хорошо держит форму и схватывается не мгновенно, чтобы можно было поправить положение подрозетника.
- Снимите крышку новой розетки, открутив большой винт в центре, и отложите ее в сторону. Подключите к каркасу розетки провода: раскрутите крепления зажимов, чтобы провода свободно входили в них; соедините их с клеммами и затяните винты. Главное — верно подключить заземление. Фазу же чаще вставляют справа, а ноль слева, но если сделаете наоборот, то ничего страшного не случится.
- Вы можете закрепить каркас в подрозетнике горизонтально или вертикально. Разницы нет, делайте так, как вам будет удобнее вставлять вилку в розетку.
- С помощью саморезов зафиксируйте розетку в подрозетнике. Сверху закрепите лицевую панель и затяните центральный винт.
Когда установите розетку, включите электричество и коснитесь индикаторной отверткой по очереди каждого контакта. Индикатор должен зажечься в том месте, где находится фаза, — это значит, что вы все сделали правильно. Если индикатор не загорелся, а вы уверены, что не допустили ошибок, то, возможно, где-то поврежден провод. Проверить целостность линии, найти проблему и исправить ее — уже работа профессионального электрика.
Как перенести розетку в другое место
Ищем скрытую проводку
В большинстве квартир установлена скрытая проводка, то есть все коммуникации находятся внутри стен. Это значит, что для переноса розетки стену придется проверить:
- С помощью уровня сделайте на стене разметку под новую розетку и штрабу для кабеля. Согласно ПУЭ 6.6.30, розетки должны быть установлены не выше 100 см от пола, в остальном выбор места за вами. Учтите еще, что в ванной, туалете и на кухне розетки должны быть расположены на расстоянии не меньше 60 см от пола и сантехники.
- Индикаторной отверткой проверьте, не проходит ли на месте разметки скрытая проводка. Переведите отвертку в режим «Н» и приложите кнопкой к стене. Водите отверткой по разметке, и если внутри есть проводка, индикатор даст вам об этом знать. В безопасном месте просверлите отверстие для подрозетника перфоратором с алмазной коронкой D68. Разметку, проходящую от одной розетки к другой, также просканируйте.
Прокладываем кабель от старой розетки и устанавливаем новую
- Демонтируйте старую розетку. Напомним основные этапы: снимите лицевую панель, убедитесь, что розетка не под напряжением, выкрутите винты, соединяющие каркас с подрозетником, открутите винты от клемм и снимите каркас с подрозетником.
- Проштрабите перфоратором канал от старой розетки к новой по разметке. Для кабеля на 3 жилы толщиной в 1 см минимальная глубина штрабы будет 3–4 см.
- Возьмите кабель с 3 жилами и сечением 2,5 мм. Зачистите его концы, сняв примерно 1 см изоляции ножом и кусачками.
- Соедините через пружинные клеммы 3 жилы кабеля с 3 жилами кабеля из старой розетки, которые соответствуют друг другу (фаза, ноль и заземление).
- Просверлите в штрабе несколько отверстий под дюбель на произвольном расстоянии друг от друга. Уложите внутрь кабель, ведущий от старой розетки к новой, и закрепите пластиковыми дюбелями-хомутами.
- Поскольку эта розетка больше не понадобится, закройте ненужное отверстие в стене.
- Поставьте розетку на новом месте. Кратко снова перечислим этапы: вставьте подрозетник на место новой розетки, проденьте через отверстие в подрозетнике силовой кабель, зачистите контакты, приклейте подрозетник, подключите к каркасу розетки провода через клеммы, зафиксируйте на саморезы каркас розетки в подрозетнике, поставьте на место лицевую панель и затяните центральный болт.
Как установить новую розетку
Можно подключить новую розетку через автомат в щитке или запитать от другой розетки. В обоих случаях придется штрабить стену и вести провод от щитка или от розетки. Принцип подключения тоже одинаковый, поэтому выбирайте вариант, который ближе. Обычно ближе оказывается другая розетка.
- Определите место для розетки.
- Проложите кабель от старой розетки.
- Демонтируйте розетку, через которую будете подключать новую.
Подключаемся к другой розетке:
- Проденьте кабель сквозь подрозетник розетки, к которой вы подключаетесь. Используйте короткий отрезок кабеля с 3 жилами и сечением 25 кв. мм. С одного конца соедините его самозажимными клеммами с розеткой, которую вы демонтировали. Другим концом подключите к силовому кабелю, идущему к новой. Благодаря этому соединению ток будет питать обе розетки одновременно.
- Верните на место «розетку-донор».
- Установите новую розетку.
Резюме
При монтаже розетки в первую очередь нужно позаботиться о безопасности: отключить электричество, работать в защитных диэлектрических перчатках и использовать инструменты с прорезиненными рукоятками, которые не пропускают ток. В остальном даже новичок справится с установкой розетки, если внимательно прочтет нашу инструкцию и поймет принцип подключения контактов.
20.05.2022
Товары из статьи
Фонарь налобный Navigator (949171) светодиодн…
Отвертка плоская 140 мм 100-500 В Witte индик…
Перчатки латексные диэлектрические Эконом (1 …
Набор диэлектрического инструмента 1000 В КВТ…
Щит распределительный встраиваемый Schneider …
Розетка Schneider Electric Glossa GSL000143 с…
Отвертка крестовая PZ1 75 мм Hesler
Отвертка плоская SL6 100 мм Hesler
Подрозетник Schneider Electric для бетона d71…
Нож строительный Hesler 18 мм с ломающимся ле…
Нож 1000 В Vira (397032) для удаления изоляци…
Уровень лазерный ADA CUBE Mini Professional E…
Уровень STABILA 70 80 см 2 глазка
Кусачки диагональные Stanley Fatmax (0-89-859…
Плоскогубцы 160 мм
Клемма на 4 провода Wago 2273-244 0,5-2,5 кв. …
Перфоратор электрический Интерскол П-30/900ЭР…
Коронка алмазная Trio-Diamond (400068) по кер…
Саморезы универсальные 35×3,5 мм оцинкованные…
Кабель Севкабель NYM 3×2,5 (100 м)
Дюбель-хомут для круглого кабеля Tech-Krep 5-…
Клей для ПГП, ГКЛ, ГВЛ Кнауф Перлфикс гипсовы…
схема подключения. ⋆ Руководство электрика
Содержание статьи
- 1 Как подключить розетку.
- 2 Подготовка к подключению розетки.
- 3 Как подключить розетку самостоятельно.
- 4 Как подключить двойную розетку.
Как подключить розетку.
Нашу жизнь просто невозможно представить без электрических приборов. Большое количество бытовой техники уверенно вошло в наши квартиры, чтобы облегчить домашнюю работу и информационное пространство. Поэтому всё чаще требуется установка новой розетки для подключения различных электроприборов.
Какие правила нужно соблюдать при монтаже электрической розетки, как правильно подключить одинарную и двойную розетки, какие инструменты понадобятся и другие нюансы мы расскажем в этой статье.
Рис.1 — визуальная схема подключения розетки
При выполнении работ по подключению розетки необходимо:
1. Перед электромонтажными работами обязательно нужно обесточить проводку на вводе в дом или квартиру.
2. Внимательно изучите прилагаемую инструкцию к изделию и следуйте её указаниям.
Не игнорируйте данные рекомендации, т.к. это может спасти вам жизнь.
Подготовка к подключению розетки.
Чтобы подключить самостоятельно розетку к электрической сети нужно подготовить следующее:
- определиться с выбором типа розетки и приобрести её;
- проложить провод к месту расположения будущего разъёма электросети;
- подготовить необходимый для монтажных работ инструмент;
- выполнить пошаговую инструкцию, которая описана ниже.
Сегодня в магазинах представлен широкий выбор разнообразных розеток для любых помещений, в различном исполнении:
- наружные;
- внутренние;
- одинарные, двойные, тройные и т.д.;
Больших отличий при подключении того или иного вида розеток нет. Разница лишь в способах их установок.
Рис.2 — исполнение розеток
Подрозетники – это коробки, изготовленные из пластмассы или материала не проводящего ток и стойкого к воспламенению. Для его установки требуется наличие ниши в стене.
Закреплять подрозетник необходимо очень прочно, чтобы розетка вместе с ним не вывалилась из места установки.
Это правило нужно обязательно учесть, т.к. многие не выключают приборы из сети, взявшись за вилку, а тянут её из розетки за шнур.
Рис.3 — подрозетники
Как подключить розетку самостоятельно.
Никаких особых навыков, чтобы правильно подключить электро розетку, не нужно. Всё делается достаточно легко, просто следуйте нашим рекомендациям.
Итак, как правило, для подключения имеется три провода:
Обратите внимание, что заземляющий провод может отсутствовать, если при монтаже электропроводки его не прокладывали. Это не повлияет на работу электроприборов, но для обеспечения безопасности данный проводник должен быть установлен.
На всех розетках нанесены специальные символы, которые указаны выше (фазный провод, нулевой провод, заземление), поэтому вы точно не ошибётесь. В принципе, никакой разницы нет, если при подключении розетки вы поменяете местами фазный и нулевой провода — на работу электроприборов это не повлияет. Главное запомните, что заземляющий провод подключается к металлическому корпусу розетки.
На рисунке 4 вы можете видеть, как правильно подключить провода к розетке. Ничего сложного, просто следуйте обозначениям на корпусе.
Рис.4 — подключение розетки.
А на рисунке 5 представлена схема подключения розетки с заземлением. Напомним, что при отсутствии заземляющего проводника, ничего при подключении не меняется, за исключением заземлителя.
Рис.5 — схема подключения розетки.
Как подключить двойную розетку.
Процесс подключения двойной розетки аналогичен подключению одинарной. То есть, необходимо правильно подцепить провода:
Разница заключается лишь в том, что необходимо провести шлейф от одной розетки к другой.
Провода ко второй розетке необходимо подключать тем же образом, что и к первой, ошибиться здесь не реально.
На рисунке 6 представлена схема подключения розетки с заземлением. Если необходимо подключить двойную розетку без заземления, то просто не задействуется заземляющий проводник.
Рис.6 — схема подключения двойной розетки.
Если же вам нужно подключить тройную розетку, либо четверную и т.д., то действуйте совершенно также, как и при подключении двойной розетки, то есть прокладыванием шлейфа проводов к каждой последующей розетки.
1. Шлейф — отрезок провода, соединяющий параллельно или последовательно несколько электроприборов.
гнездовых соединений
гнездовых соединенийПринципы программирования связи AIX версии 4.3
Изначально сокет создается в неподключенном состоянии, что означает, что сокет не связан ни с каким внешним пунктом назначения. Подпрограмма connect привязывает постоянный пункт назначения к сокету, переводя его в подключенное состояние. Прикладная программа должна вызывать connect для установления соединения до того, как он сможет передавать данные через надежный потоковый сокет. Сокеты, используемые со службами дейтаграмм без установления соединения, не требуют подключения до их использования, но подключение сокетов позволяет передавать данные без указания каждый раз пункта назначения.
Семантика подпрограммы connect зависит от базовых протоколов. Прикладная программа, которой требуется надежная служба доставки потоков в сети Интернет, должна выбрать протокол управления передачей (TCP). В таких случаях Подпрограмма connect устанавливает TCP-соединение с пунктом назначения и возвращает ошибку, если не может. В случае услуг без установления соединения подпрограмма connect не делает ничего, кроме локального сохранения адреса назначения. Точно так же прикладные программы, которым требуется служба дейтаграмм с установлением соединения в семействе драйверов сетевых устройств AIX (NDD), должны выбрать протокол асинхронного режима передачи (ATM). Соединение в протоколе ATM устанавливает постоянный виртуальный канал (PVC) или коммутируемый виртуальный канал (SVC). Для PVC настроена локальная станция, и сетевая активность отсутствует. Для SVC виртуальный канал устанавливается сквозным в сети с удаленной станцией.
Установлены соединения между клиентским процессом и серверным процессом. В сетевой среде, ориентированной на соединение, процесс клиента инициирует соединение, а процесс сервера получает или отвечает на соединение. Взаимодействие клиента и сервера происходит следующим образом:
- Когда сервер хочет предложить свои рекламируемые услуги, он привязывает сокет к общеизвестному адресу, связанному со службой, а затем пассивно прослушивает свой сокет. Затем несвязанный процесс может встретиться с сервером.
- Сокет процесса сервера помечен, чтобы указать, что входящие соединения должны приниматься через него.
- Клиент запрашивает услуги у сервера, инициируя подключение к серверному сокету. Процесс клиента использует подпрограмму connect , чтобы инициировать соединение через сокет.
- Если сокет клиентского процесса не связан во время вызова connect , система автоматически выбирает и привязывает имя к сокету, если это необходимо. Это обычный способ привязки локальных адресов к сокету.
- Система возвращает ошибку при сбое соединения (однако любое имя, автоматически привязанное системой, сохраняется). В противном случае сокет связывается с сервером и может начинаться передача данных.
Соединения с сервером
В домене Интернета серверный процесс создает сокет, привязывает его к известному порту протокола и ожидает запросов. Если серверный процесс использует надежную потоковую доставку или вычисление ответа занимает значительное время, может случиться так, что новый запрос прибудет до того, как сервер закончит отвечать на старый запрос. 9Подпрограмма 0009 listen позволяет серверным процессам подготовить сокет для входящих соединений. Что касается базовых протоколов, подпрограмма listen переводит сокет в пассивный режим, готовый принимать соединения. Когда серверный процесс запускает подпрограмму listen , он также информирует операционную систему о том, что программное обеспечение протокола должно ставить в очередь несколько одновременных запросов, поступающих на сокет. Подпрограмма listen включает параметр, который позволяет процессу указывать длину очереди запросов для этого сокета. Если очередь заполнена, когда поступает запрос на соединение, операционная система отказывает в соединении, отбрасывая запрос. 9Подпрограмма 0009 listen применяется только к сокетам, которые выбрали надежную доставку потока или службу дейтаграмм, ориентированную на соединение.
Серверный процесс использует подпрограммы socket , bind и listen для создания сокета, привязки его к известному адресу протокола и указания длины очереди для запросов на подключение. Вызов подпрограммы bind связывает сокет с известным портом протокола, но сокет не подключен к определенному внешнему назначению. Серверный процесс может указать подстановочный знак, позволяющий сокету получать запрос на соединение от произвольного клиента.
Все это относится к службе дейтаграмм, ориентированной на соединение, в домене NDD, за исключением того, что серверный процесс связывает локально созданный сокет с именем AIX NDD и задает параметры ATM B-LLI и B-HLI перед вызовом слушай подпрограмма. Если указан только B-LLI , все входящие вызовы (или соединения), независимо от значения B-HLI , будут передаваться этому приложению.
После того, как сокет установлен, процесс сервера должен ожидать соединения. Серверный процесс ожидает соединения, используя принять подпрограмму . Вызов подпрограммы accept блокируется до тех пор, пока не поступит запрос на соединение. При поступлении запроса операционная система возвращает адрес клиентского процесса, разместившего запрос. Операционная система также создает новый сокет, назначение которого связано с запрашивающим клиентским процессом, и возвращает дескриптор нового сокета вызывающему серверному процессу. Исходный сокет по-прежнему имеет подстановочный внешний пункт назначения, который остается открытым.
При установлении соединения вызов подпрограммы accept возвращается. Серверный процесс может обрабатывать запросы интерактивно или параллельно. При интерактивном подходе сервер сам обрабатывает запрос, закрывает новый сокет, а затем запускает подпрограмму accept для получения следующего запроса на соединение. При параллельном подходе после возврата вызова подпрограммы accept серверный процесс создает новый процесс для обработки запроса. Новый процесс наследует копию нового сокета, продолжает обслуживать запрос и затем завершает работу. Исходный серверный процесс должен закрыть свою копию нового сокета, а затем вызвать принять подпрограмму для получения следующего запроса на соединение.
Если вызов select выполняется для файлового дескриптора сокета, ожидающего выполнения подпрограммы accept для соединения, когда возвращается сообщение о готовности, это не означает, что данные есть, а только то, что запрос был успешно выполнен. . Теперь можно запустить подпрограмму select для возвращенного дескриптора сокета, чтобы увидеть, доступны ли данные для диалога в сокете сообщений.
Параллельный дизайн серверных процессов приводит к тому, что несколько процессов используют один и тот же номер порта локального протокола. В связи в стиле TCP пара конечных точек определяет соединение. Таким образом, не имеет значения, сколько процессов используют данный номер порта локального протокола, если они подключаются к разным пунктам назначения. В случае параллельного сервера существует один процесс для каждого клиента и один дополнительный процесс, который принимает соединения. Основной серверный процесс имеет подстановочный знак для пункта назначения, что позволяет ему подключаться к произвольному иностранному сайту. Каждый оставшийся процесс имеет определенное внешнее назначение. Когда приходит сегмент данных TCP, он отправляется в сокет, подключенный к источнику сегмента. Если такого сокета не существует, сегмент отправляется в сокет, у которого есть подстановочный знак для его внешнего назначения. Кроме того, поскольку сокет с подстановочным внешним пунктом назначения не имеет открытого соединения, он принимает только те сегменты TCP, которые запрашивают новое соединение.
Службы дейтаграмм без установления соединения
Операционная система обеспечивает поддержку взаимодействий без установления соединения, типичных для средств дейтаграмм в сетях с коммутацией пакетов. Сокет дейтаграмм обеспечивает симметричный интерфейс для обмена данными. Хотя процессы по-прежнему могут быть клиентскими и серверными, установление соединения не требуется. Вместо этого каждое сообщение включает адрес назначения.
Приложение может создавать сокеты дейтаграмм, используя сокет подпрограмма. В домене Интернета, если необходим конкретный локальный адрес, подпрограмма bind должна предшествовать первой передаче данных. В противном случае операционная система устанавливает локальный адрес или порт при первой отправке данных. В домене NDD связывание должно предшествовать первой передаче данных. Прикладная программа использует подпрограммы sendto и recvfrom для передачи данных; эти вызовы включают параметры, позволяющие клиентскому процессу указать адрес предполагаемого получателя данных.
В дополнение к вызовам sendto и recvfrom сокеты дейтаграмм могут также использовать подпрограмму connect для связывания сокета с определенным адресом назначения. В этом случае любые данные, отправляемые через сокет, автоматически адресуются к подключенному одноранговому сокету, и клиентскому процессу доставляются только данные, полученные от этого однорангового узла. Для каждого сокета одновременно разрешен только один подключенный адрес; вторая подпрограмма connect изменяет адрес назначения.
Запрос подпрограммы connect на сокете дейтаграмм приводит к тому, что операционная система записывает адрес однорангового сокета (по сравнению с потоковым сокетом, где запрос на соединение инициирует установление сквозного соединения). Подпрограммы accept и listen не используются с сокетами дейтаграмм.
Пока дейтаграммный сокет подключен, ошибки из недавних подпрограмм отправки могут возвращаться асинхронно. Об этих ошибках можно сообщить при последующих операциях над сокетом или специальной опцией сокета 9.0009 ТАК_ОШИБКА . Эта опция при использовании с подпрограммой getsockopt может использоваться для запроса статуса ошибки. Подпрограмма select для чтения или записи возвращает значение true, когда процесс получает индикацию ошибки. Следующая операция возвращает ошибку, и статус ошибки очищается.
Прочтите следующие понятия для получения дополнительной информации, которая может вам понадобиться перед подключением сокетов:
- Файлы заголовков сокетов
- Типы сокетов и протоколы
Учебники по программированию на Python
youtube.com/embed/Lbfe3-v7yE0″ frameborder=»0″ allow=»accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture» allowfullscreen=»»>
Добро пожаловать в учебник по сокетам в 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
:
сокет импорта 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. 0166 socket.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).
Однако после этого наш клиент просто завершает работу, потому что он завершил свою работу.
Итак, мы установили соединение, и это здорово, но мы действительно хотим отправлять сообщения и/или данные туда и обратно. Как мы это делаем?
Наши сокеты могут отправлять
и получать
данные. Эти методы обработки данных имеют дело с буферами. Буферы создаются фрагментами данных определенного фиксированного размера. Давайте посмотрим, что в действии:
Inside 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.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((сокет.gethostname(), 1234)) пока верно: полное_сообщение = '' пока верно: сообщение = s.recv(8) если len(msg) 0: печать (полное_сообщение)Это работает, но есть проблемы. Что произойдет, если мы перестанем закрывать клиентский сокет на стороне сервера? На самом деле мы никогда не получаем сообщения! Почему это?
TCP — это коммуникационный *поток*.