Как расположить розетки


Как расположить розетки в квартире: лучшие схемы

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

Оптимальное расположение

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

Прихожая и коридор

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

Ванная

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

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

Кухня

Кухня лидирует по количеству постоянно работающих электроприборов. Основной перечень постоянно включённой в сеть техники:

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

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

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

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

Гостиная

Эта комната служит для отдыха и развлечения домочадцев, в ней расположены телевизор, аудиоцентр, Wi-Fi роутер, сплит-система, точки локального освещения. Эти приборы подключены постоянно, розетки для них по правилам безопасности монтируют на высоте 30 см от пола и не менее 10 см от дверных и оконных проёмов.

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

Будет удачным решением сделать возможность подключения зарядных устройств или электрокамина в диванной зоне.

Спальня

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

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

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

Детская

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

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

Кабинет или рабочий стол

На рабочем столе обычно стоит компьютер, монитор, периферийная техника, телефон и настольная лампа. Для комфортной работы потребуется не менее 6 розеток с сетевым фильтром, а чтобы спрятать некрасивую путаницу из проводов, следует смонтировать электрофурнитуру на высоте 25–30 см над уровнем пола и убрать провода под кабель-канал.

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

Видео: Как правильно разместить розетки и выключатели

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

Оцените статью: Поделитесь с друзьями!

Ваш гид по основным телефонным розеткам

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

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

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

FTTC

NTE 2000

NTE 5C MK 4

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


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

Стандартная основная телефонная розетка

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

Основная телефонная розетка с предварительной фильтрацией

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


Подключение к тестовой розетке

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

  • Основные телефонные розетки, которые имеют два порта или один порт с горизонтальной линией на передней панели, содержат тестовый разъем.
  • Основные телефонные розетки с одним портом без горизонтальной линии не имеют тестового разъема. Если это похоже на ваше, пожалуйста, не пытайтесь открутить лицевую панель.

Вот как подключить маршрутизатор к тестовой розетке:

  1. Осторожно открутите лицевую панель на основном разъеме телефона с помощью отвертки. Если у вашего основного телефонного разъема нет винтов, сожмите боковые стороны лицевой панели, чтобы отсоединить ее
  2. Теперь осторожно потяните лицевую панель на себя
  3. После снятия лицевой панели вы увидите тестовое гнездо внутри.Он похож на телефонный порт на передней панели основного телефонного разъема, но без сдвижной крышки
  4. Если вы тестируете маршрутизатор, подключите микрофильтр к тестовой розетке
  5. Затем подключите серый широкополосный кабель маршрутизатора к порту ADSL / DSL микрофильтра

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

.Программирование сокетов

на Python (Руководство) - Real Python

Сокеты и API сокетов используются для отправки сообщений по сети. Они обеспечивают форму межпроцессного взаимодействия (IPC). Сеть может быть логической локальной сетью для компьютера или сетью, которая физически подключена к внешней сети, со своими собственными подключениями к другим сетям. Очевидным примером является Интернет, к которому вы подключаетесь через своего провайдера.

В этом руководстве есть три различных итерации построения сервера и клиента сокетов с помощью Python:

  1. Мы начнем обучение с рассмотрения простого сервера и клиента сокета.
  2. После того, как вы познакомились с API и принципами работы в этом начальном примере, мы рассмотрим улучшенную версию, которая обрабатывает несколько подключений одновременно.
  3. Наконец, мы перейдем к созданию примера сервера и клиента, которые функционируют как полноценное приложение для сокетов, со своим собственным настраиваемым заголовком и содержимым.

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

Примеры в этом руководстве используют Python 3.6. Вы можете найти исходный код на GitHub.

Сети и розетки - большие предметы. О них написаны буквально тома. Если вы новичок в сокетах или сетях, это совершенно нормально, если вы чувствуете себя перегруженным всеми терминами и частями. Я знаю, что сделал!

Но не расстраивайтесь.Я написал для вас это руководство. Как и в случае с Python, мы можем учиться понемногу за раз. Воспользуйтесь функцией закладок в браузере и вернитесь, когда будете готовы к следующему разделу.

Приступим!

Фон

Розетки имеют долгую историю. Их использование началось с ARPANET в 1971 году, а позже стало API в операционной системе Berkeley Software Distribution (BSD), выпущенной в 1983 году, под названием Berkeley Sockets.

Когда в 1990-х годах появился Интернет, вместе с World Wide Web росло и сетевое программирование.Веб-серверы и браузеры не были

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

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

Автор

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

Аннотация

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

Розетки

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

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

История

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

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

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

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

 # создать INET, STREAMing сокет s = socket.socket (socket.AF_INET, socket.SOCK_STREAM) # теперь подключаемся к веб-серверу через порт 80 - обычный http порт s.connect (("www.python.org", 80)) 

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

То, что происходит на веб-сервере, немного сложнее. Во-первых, веб-сервер создает «серверный сокет»:

 # создать INET, STREAMing сокет serversocket = socket.socket (socket.AF_INET, socket.SOCK_STREAM) # привязываем сокет к общедоступному хосту и известному порту serversocket.bind ((socket.gethostname (), 80)) # стать серверным сокетом серверный сокет.слушать (5) 

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

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

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

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

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

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

МПК

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

См. Также

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

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

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

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

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

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

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

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

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

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

Автор

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

Аннотация

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

Розетки

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

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

История

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

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

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

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

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

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

То, что происходит на веб-сервере, немного сложнее. Во-первых, веб-сервер создает «серверный сокет»:

 # создать сокет INET, STREAMing serversocket = socket.socket ( socket.AF_INET, socket.SOCK_STREAM) # привязать сокет к общедоступному хосту, # и известный порт serversocket.bind ((socket.gethostname (), 80)) # стать серверным сокетом serversocket.listen (5) 

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

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

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

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

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

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

МПК

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

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

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

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

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

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

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

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

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

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

.

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