Розетки закрытые: Что нужно знать о встраиваемых розетках – Справочник электрика
Что нужно знать о встраиваемых розетках – Справочник электрика
Каждый знает, как выглядят электророзетки, но не всем известно, что они различаются не только по цвету и форме, но и по эксплуатационным характеристикам. Также есть изделия, которые имеют дополнительные функции.
Что собой представляет электророзетка
Это изделие является составляющим электросети, которое необходимо для подключения к ней электрооборудования. Главная техническая характеристика — способность проводить ток и сохранять при этом работоспособность в течение всего эксплуатационного периода.
Обычные электророзетки функционируют с электротоком 10, 16 А. Они подходят для приборов мощностью 2–3,5 кВт. Если же значение будет больше, высока вероятность перегрузки контактной пары (т. е. самой электророзетки и воткнутой вилки). В результате возникнет аварийная ситуация.
Для более мощных электроприборов предназначаются промышленные электророзетки с силой тока 32 А.
В помещениях различного назначения рекомендуется устанавливать электророзетки с заземлением. Они обеспечивают безопасную работу, защищают людей от воздействия тока. Помимо фазы и рабочего ноля они имеют третий контакт, который соединяется с заземляющим кабелем. Через него отводится статическое электричество, высокое напряжение при коротком замыкании.
В чем разница между встраиваемыми и накладными разновидностями
Они отличаются способом монтажа. Для встраиваемых розеток необходимо проделывание в стене специального отверстия. Они размещаются внутри, их корпус практически не выступает над поверхностью.
Накладные просто монтируются на стене, закрывая собой все контакты. Их недостатком является то, что они портят внешний вид интерьера, могут легко сломаться под механическим воздействием. Накладные предназначаются для открытой электропроводки, а встраиваемые для закрытой.
Разновидности, их описание
Бывают не только с одной ячейкой для вилки, но и с двумя, тремя, четырьмя.
Это позволяет одновременно подключать сразу несколько электротехнических приборов. В установке дополнительного подрозетника нет необходимости. Электрические точки находятся в одной разделенной на секции колодке. В каждом терминале имеются свои контакты и клеммы.Классификация по маркировке
Существует две маркировки — IP и NEMA. Первая обозначает защиту от жидкости:
- Отсутствие защитных функций;
- Не навредит попадание вертикальных капель;
- Защита предыдущего типа + от воды, падающей под маленьким наклоном;
- Ничего не случится даже при каплях, капающих под ∠ 60 градусов;
- Замыкания не произойдет при любых брызгах;
- Водная струя будет безопасна;
- Не страшны даже волны;
- Небольшое количество времени будет функционировать на глубине один метр;
- Можно погружать в воду более чем на метр;
- Будет работать на любой глубине непродолжительное время.
Вторая маркировка (NEMA) указывает на способность функционировать в различных условиях:
- С защитой от пыли и проникновения пальцев. Подходит для жилых и административных зданий.
- Как правило, используется для размещения в бытовых помещениях. Защищена от влаги и пыли, поэтому можно монтировать в ванной комнате.
- Не боится обледенения, сильной запыленности, осадков. Можно использовать, например, на балконе или в подъезде.
- Будет функционировать при низкой температуре.
- Плохие погодные условия не влияют на функциональность. Допустимо даже образование льда или налипание мокрого снега.
- Защищена от попадания влаги, грязи, пыли. Обычно используют рядом с автомобильными трассами.
- Рекомендована к использованию вне здания. Выдерживает сильный дождь, ветер, запыленность.
- Корпус полностью закрыт, что позволяет использовать под водой недолго.
- Не применяется в бытовых условиях. Рекомендована для агрессивных условий окружающей среды.
- Защищена от пыли, жидкости, мелкого сора. Рекомендована для комнат с повышенным уровнем загрязнения и влажности.
- Для установки внутри здания. Полностью защищена (от воды, масла, грязи, охладителей).
Техническая документация к данным элементам электросети обязательно должна содержать информацию с данными маркировками.
Классификация по допфункциям
По дополнительным возможностям можно привести следующую классификацию розеток
- Розетки RJ. Под данной аббревиатурой выпускаются устройства для интернета, стационарного телефона. Розетки RJ 45 применяются для вычислительной техники. Например, ПК, ноутбуков. Розетки RJ 11 предназначены для домашних телефонов. Допускают вывод кабеля круглого или плоского.
- Розетка современная с USB. Это стандартные электроустройства, которые оснащены разъемами для зарядки различных гаджетов. Допускают напряжение 220 Вт. Удобны тем, что телефон или планшет можно подзарядить в любое время, даже если нет свободного места.
- TV розетка. Для подключения телевизора к ТВ, спутниковой или радио сети. Удобна тем, что лишние провода можно замаскировать под плинтусами или в перегородках. К ней подключаются даже две и более единиц техники.
- Аудио розетки. Предназначается для получения качественных и беспрерывных audio сигналов. Она нужна для подключения ресивера от домашнего кинотеатра.
- С выключателем, встраиваемым в одном корпусе. Благодаря такому решению нет необходимости прокладывать провода к каждому элементу, сверлить несколько отверстий.
- С крышками и шторками. Защищают разъемы от проникновения влаги, пылинок, мусора. Рекомендуется использовать в помещениях, где находятся маленькие дети, чтобы они не засунули внутрь пальцы или посторонние предметы.
- С подсветкой. Очень удобно пользоваться в темноте. Благодаря подсветке можно без проблем воткнуть вилку.
- С таймером. Позволяют самостоятельно установить период, в течение которого они будут работать. После окончания времени они отключаться самостоятельно. Удобны для подключения обогревателей, у которых нет собственного таймера.
- С электросчетчиком. Дают возможность контролировать электропотребление определенной бытовой техникой.
- С функцией выталкивания вилки. Позволяет аккуратно вытащить вилку.
- С Wi-Fi. Устанавливаются для системы «Умный дом». Благодаря этому можно управлять техникой через планшет или смартфон.
Особенности монтажа
Установка скрытых в стене электроустройств осуществляется по единому принципу
- Отключение электричества с распределительного щитка.
- Проделывание отверстия в стене.
- Монтаж подрозетника.
- Проведение кабеля.
- Установка самого электроустройства.
- Проверка работоспособности.
Перед монтажом накладного типа также нужно отключить в помещении электропитание для безопасности проведения работ. После этого установить ее на крепежи, закрыв все провода.
Монтаж будет различаться в зависимости от материала, которым покрыты перегородки, вида проводки (открытая или закрытая) и т.д. Если опыт в таких работах отсутствует, лучше доверить работу профессиональному электрику. Если что-то сделать неправильно, без света можно оставить весь дом или навредить собственному здоровью.
Дизайн электрических розеток: заметные мелочи (55 фото)
Хоть электрические розетки и не занимают много места, однако играют не последнюю роль в интерьере жилища. Опытные дизайнеры знают, насколько важна каждая мелочь, поэтому при оформлении интерьера учитывают все. Розетки, а также выключатели — неотъемлемая часть окружающего пространства. Они должны органично вписываться в дизайн квартиры, не выбиваясь из него: быть незаметными, или, наоборот, служить дополнительным декоративным украшением.
В статье рассмотрим особенности декоративного применения розеток в интерьере, выясним, как лучше оформить эти необходимые каждому дому детали, рассмотрим и другие вопросы по теме.
Виды розеток
По способу установки изделия делятся на:
- встраиваемые;
- накладные.
Встраиваемые модели сливаются со стеной, утоплены в нее. Если такую розетку подобрать под цвет стен, она будет практически не видна. Современные дизайнеры часто используют этот лаконичный прием оформления жилища.
Накладные модели, как следует из названия, накладываются на уже готовую стену сверху, поэтому они выделяются на ее фоне, торчат. Их можно подбирать под цвет стен либо, наоборот, выделять контрастным декором. Интересно смотрится, например, когда стены — белые, а розетки — черные, и наоборот.
По функциональности изделия делятся на следующие виды.
- Влагозащитные. Как понятно, эти электроприборы имеют внешнюю защиту от проникновения в них воды и сырости.
- Пылезащитные. В данном случае изделия не воспринимают пыль.
- На пульте управления. Дистанционный пульт — удобная вещь, особенно когда в доме есть дети. Он позволяет обесточить розетки или, наоборот, включить одним нажатием кнопки.
Потолочные декоративные розетки — тоже отличный вариант украшения жилища. Они выполняют чисто декоративную роль и отлично с ней справляются. На такое украшение потолка невозможно не обратить внимание, оно становится настоящим смысловым центром интерьерной композиции. Такая розетка — по сути лепнина, поэтому органично впишется только в соответствующий интерьер.
Потолочные розетки в интерьере подходят историческим стилям: ампир, рококо, барокко, классическому. Если квартира оформлена в стиле минимализм или хай-тек, это потолочное украшение будет смотреться неуместно.
Внешний декор и стили интерьера
Рассмотрим способы и приемы внешнего оформления розеток и выключателей, принятые в современном дизайне интерьеров.
Необходимо отметить, что покупая розетку, стоит сразу же озаботиться тем, насколько органично данное изделие будет вписываться в интерьер квартиры. Лучше продумать формы и размер изделий заранее, чтобы в магазин идти уже целенаправленно, четко представляя себе окончательный дизайн своей квартиры. В противном случае есть риск приобрести неподходящую вещь.
Как подобрать розетку под самые популярные интерьерные стили?
Кантри
Если дом или квартира оформлены в этом расслабленном «деревенском» стиле, ценящем все натуральное, рекомендуем приобрести модели с экологичным верхним покрытием из кожи. Кожа может быть как натуральной, так и искусственной.
Минимализм
Этот интерьерный стиль встречается очень часто при оформлении современного жилья. Для него идеально подойдут лаконичные изделия темных оттенков: серые, черные, бежевые. Форма розеток и выключателей — квадрат со скругленными углами.
Хай-тек
Этот современный дизайн украсят модели с хромированной отделкой или из закаленного стекла, прозрачные. Сенсорные высокотехнологичные выключатели тоже прекрасно впишутся в стиль хай-тек.
Модерн
В интерьер в стиле модерн прекрасно впишутся яркие изделия строгой геометричной формы. Цветовой спектр широк: красные, желтые и зеленые треугольники, квадраты и круги придутся «ко двору» в подобном жилище.
Лофт
Это американский стиль, подразумевающий большие, нарочито грубоватые пространства, становится популярным и в мегаполисах нашей страны. Розетки и выключатели в интерьере лофта должны быть из толстого матового стекла, напоминающие производственную отделку. Модели с отделкой из цветного стекла и металла будут тоже смотреться вполне гармонично.
Этнический
Для этого «естественного» интерьерного стиля очень важно натуральное происхождение материалов, поэтому лучше всего в него впишутся модели розеток и выключателей, стилизованные под следующие материалы:
- вишня;
- красное дерево темного оттенка;
- светлая кленовая древесина.
Кроме того, этнический стиль подразумевает различные росписи и орнаменты, поэтому и розетки в интерьере этники могут быть оформлены подобным декором. В том числе керамические и модели из дерева.
Ампир, барокко, рококо
Эти исторические стили подразумевают роскошь, богатство, шик и красоту, поэтому любят все помпезное, броское, напоминающие оформление дворцов. Дизайн розеток и выключателей тоже не должен отставать от общего великолепия, поэтому в данном случае можно использовать золоченые модели, украшенные стразами, камнями, изящным декором, орнаментом.
Ретро
Этот интерьерный стиль подразумевает округлые формы и довольно большие размеры, поэтому и розетки в данном случае должны быть приличными по величине: круглыми, квадратными или прямоугольными.
Выключатели оформляются соответствующим образом и имеют характерные небольшие клавиши. Цвет розеток нейтральный, часто тусклый, винтажный, с эффектом потертости.
Материал
Рассмотрим, из каких материалов делают современные розетки.
Пластмасса. Самый популярный и практичный материал для подобных изделий. Модели из пластмассы очень удобны и дешево стоят.
Металл. Такие варианты идеально подходят для квартир, оформленных в современных стилях: минимализм, хай-тек, лофт.
Камень. Модели из этого природного материала органично впишутся в «натуральные» стили: кантри, этнический, рустикальный.
Дерево. Изделия из этого природного экологичного материала отлично впишутся в простые, незамысловатые стили, приближенные к естественным.
Стекло. Изящные стеклянные модели прекрасно смотрятся в современных интерьерах. Они могут по-настоящему украсить жилище, порой представляя собой почти что произведения искусства. Можно подобрать розетки из стекла, украшенные красивым декором, стразами.
Сейчас на волне всеобщего увлечения «зеленым» дизайном не остается в стороне и оформление розеток. Так, дизайнеры уже придумали своеобразное декорирование их стилизованными мхами, лишайниками, зеленой травой. Смотрится это, конечно, непривычно, но может украсить модное сейчас «экожилье».
Советы
Если выбираете изделие для детской комнаты, остановите выбор на ярких моделях веселой расцветки, и не забудьте про заглушки для них. Современные производители выпускают и специальные варианты, предназначенные именно для детской. Такие изделия безопасны, имеют встроенную защиту-шторки от любознательных пальчиков.
Если хотите, чтобы дизайн розеток и выключателей соответствовал индивидуальному стилю вашей квартиры, можно их украсить по собственному вкусу. Сейчас в продаже есть всевозможные трафареты для росписи, различные наклейки, прочие приспособления для декорирования.
Если необходима розетка для ванной или кухни, советуем остановить выбор на моделях с защитой от влаги. О том, что изделие имеет такую защиту, оповещает специальный маркер на его упаковке.
Если хотите контролировать поступление электроэнергии в дом, выбирайте вариант с таймером. Он позволяет регулировать время, в течение которого розетка будет функционировать.
Лучшие идеи маскировки розеток и проводов
Представить свою жизнь без использования электрических приборов невозможно. Наличие современной техники требует размещения дополнительных источников питания. При этом тройники, удлинители, спрятанные в укромном уголке, а порой даже провисающие провода, отнюдь не добавляют эстетики. Между тем существует масса интересных способов скрыть стационарные источники питания от посторонних глаз. Идей, достойных повторения, масса. Способов маскировки тоже хоть отбавляй.
Дополненная подобранной в тон стен верхней панелью розетка выглядит более эстетично. Когда электроприборы не используются, она становится малозаметной.
Выдвижной механизм с тройником станет настоящей находкой на кухне. После использования панель можно просто убрать, слегка надавив на нее.
Еще один вариант выдвижной панели, но уже с вертикальным расположением гнезд. Места такая розетка займет еще меньше.
Выдвижной тройник можно вмонтировать не только в столешницу, но и в одну из подвесных полок.
Отличная идея спрятать провода в стол.
Под оригинальной «скалой» у стены легко спрятать не только розетку, но и лишние провода.
Это решение не лишено креатива. Спрятанный провод не только остался на виду, но стал помимо этого элементом декора.
Маскирующая крышка может быть откидной или выдвижной. При желании ее можно дополнительно декорировать или сделать еле заметной.
Всегда можно разместить розетку непосредственно под столешницей или под подоконником.
Использование на кухне большого количества бытовых приборов является нормой. Без дополнительных розеток здесь не обойтись.
Эта оригинальная розетка имитирует вход в сказочное подземелье. Если в доме есть маленькие дети, такую конструкцию лучше дополнить заглушкой.
Еще один вариант сказочной дверцы.
Организация небольшой ниши не потребует много времени. Степень комфорта при этом увеличится.
Спрятать розетки легко и в ящике. Здесь же можно выделить место для гаджетов и мелких электроприборов.
закрытых гнезд Spelter (CSS) | Веревочный блок
Дистрибьюция
Ropeblock имеет сильную глобальную сеть дистрибьюторов складских запасов. Это гарантирует немедленную доступность розеток Ropeblock для конечных пользователей и производителей оборудования.
Конструкция
Механизмы загрузки гнезда Spelter характеризуются как очень сложные и интенсивно исследовались Ropeblock с использованием тензометрических испытаний и исследований методом конечных элементов. Истинное и полное понимание нелинейного поведения необходимо для достижения инженерного оптимума. Этот оптимальный геометрический вариант был дополнен нашей первой на рынке конструкцией с противовращением и отрицательной нагрузкой, а также конструкцией с низким коэффициентом надреза для повышения усталостной прочности. Полный ассортимент розеток Ropeblock одобрен DNV GL и LRS.
Материал
Наш стандартный ассортимент головок доступен из закаленной и отпущенной литой стали с механическими свойствами, отвечающими жестким требованиям современного рынка.Все наши розетки подходят для использования в условиях отрицательной температуры. Материалы соответствуют или превышают ударную вязкость> 42 Дж / -20 ° C по Шарпи-V. Гнездо Ropeblock маркируется размером, диаметром троса и номером партии или серийным номером. Все детали полностью отслеживаются до их сертификата по партии или серийному номеру, указанному на каждом компоненте.
Испытания
Розетки Ropeblock проходят самые строгие процедуры неразрушающего контроля поверхности и объема, исключающие любой риск производственных дефектов. Эти процедуры принимаются всеми крупными сторонними организациями. Розетки могут быть подвергнуты испытательной нагрузке в соответствии с программой тестирования Ropeblock, это подразумевает тестирование до 30% от MBL сокета. По запросу доступны более высокие испытательные нагрузки. Собственный доступ к испытательному стенду с вертикальной розеткой, а также к горизонтальному испытательному стенду общего назначения обеспечивает быстрое время реакции. Специально разработанные инструменты тестирования были разработаны для тестирования всех элементов, включая корзину.
Покрытие
Все разъемы Wedge, Spelter, Fast и Super Reeve покрыты синей грунтовкой Ropeblock или оцинкованы горячим способом.
Особые требования
Наши инженеры готовы работать над любыми особыми требованиями, которые могут у вас возникнуть. Усовершенствованные методы 3D CAD и метод конечных элементов (FEM) сокращают время вывода на рынок новых инновационных конструкций розеток. Эти конструкции включают, но не ограничиваются ими, различные материалы (например, нержавеющую сталь), расширенные функции (например, поворотное гнездо), эстетический дизайн (например, для мостовидных работ). Для получения более подробной информации свяжитесь с нами напрямую.
— Ktor
Этот раздел справки находится в разработке и будет обновлен в будущем.
Помимо обработки HTTP для сервера и клиента, Ktor поддерживает клиент и сервер, необработанные сокеты TCP и UDP. Он предоставляет приостанавливающий API, который использует NIO под капотами.
Добавить зависимости
Чтобы включить поддержку Sockets
, вам необходимо включить артефакт ktor-network
в сценарий сборки:
реализация «io.ktor: ktor-network: $ ktor_version»
реализация («io.ktor: ktor-network: $ ktor_version»)
<зависимость>
Использование
Чтобы создать серверные или клиентские сокеты, необходимо использовать построитель aSocket
с обязательным ActorSelectorManager
: aSocket (селектор)
. Например: aSocket (ActorSelectorManager (Dispatchers.IO))
.
Затем используйте:
Это возвращает SocketBuilder
, который можно использовать для:
Если вам нужно управлять диспетчером, используемым сокетами, вы можете создать экземпляр селектора, который использует, например, кэшированный пул потоков:
val exec = Исполнители.newCachedThreadPool () val selector = ActorSelectorManager (exec.asCoroutineDispatcher ()) val tcpSocketBuilder = aSocket (селектор) .tcp ()
После открытия сокета
путем привязки или подключения сборщика, вы можете читать или записывать в сокет, открывая каналы чтения / записи:
val input: ByteReadChannel = socket. openReadChannel () val вывод: ByteWriteChannel = socket.openWriteChannel (autoFlush = true)
Вы можете прочитать KDoc для ByteReadChannel и ByteWriteChannel для получения дополнительной информации о доступных методах.
Сервер
При создании серверного сокета необходимо привязать
к определенному SocketAddress
, чтобы получить ServerSocket
:
val server = aSocket (selector) .tcp (). Bind (InetSocketAddress («127.0 .0,1 «, 2323))
Серверный сокет имеет метод accept
, который по одному возвращает подключенный сокет для каждого входящего соединения, ожидающего в очереди :
val socket = server.accept ()
Если вы хотите поддерживать несколько клиентов одновременно, не забудьте вызвать launch {}
, чтобы предотвратить приостановку функции, принимающей сокеты.
Simple Echo Server:
fun main (args: Array
Затем вы можете подключиться к нему с помощью telnet и начать набирать:
telnet 127. ] ‘. Здравствуйте Здравствуйте Мир Мир |
Клиент
При создании клиента сокета необходимо подключить
к определенному SocketAddress
, чтобы получить Socket
:
val socket = aSocket (селектор) .tcp (). Connect (InetSocketAddress («127.0 .0,1 «, 2323))
Простой клиент, подключающийся к эхо-серверу:
fun main (args: Array
Secure Sockets (SSL / TLS)
Ktor поддерживает безопасные сокеты. Чтобы включить их, вам нужно будет включить io.ktor: ktor-network-tls: $ ktor_version
артефакт и вызвать .tls ()
в подключенный сокет.
Подключиться к защищенной розетке:
runBlocking { val socket = aSocket (ActorSelectorManager (Dispatchers.IO)). tcp (). connect (InetSocketAddress («google.com», 443)). tls () val w = socket.openWriteChannel (autoFlush = false) w.write («GET / HTTP / 1.1 \ r \ n») w.write («Хост: google.com \ r \ n») w.write («\ r \ n») w.flush () val r = socket.openReadChannel () println (r.readUTF8Line ()) }
Вы можете настроить несколько дополнительных параметров для TLS-соединения:
suspend fun Socket.tls ( trustManager: X509TrustManager? = ноль, randomAlgorithm: String = «NativePRNGNonBlocking», serverName: Строка? = ноль, coroutineContext: CoroutineContext = Dispatchers.IO ): Разъем
Последнее изменение: 28 декабря 2020 г.
сокет — The CHICKEN Scheme wiki
розетка
socket предоставляет интерфейс к API сокета BSD. Для более высокого уровня интерфейса см. Расширения tcp6 и udp6.
Обзор
Это расширение обеспечивает комплексный интерфейс для сокетов BSD, включая создание сокетов, настройку клиента и сервера, передачу данных, порты ввода-вывода, прямое и обратное разрешение адресов, параметры сокета и целочисленные константы, связанные с сокетами.Он поддерживает как IPv4, так и IPv6, а также сокеты UNIX.
Все операции с сокетом блокируют только вызывающий поток; другие потоки могут продолжать работать даже на платформах Windows.
Интерфейс розетки
Создание розетки
[запись] розетка[процедура] (тип семейства сокетов #! Необязательный (протокол 0))
[процедура] (розетка? Так)
[процедура] (сокет-файлно так)
[процедура] (Socket-family so)
[процедура] (розетка так)
[процедура] (сокет-протокол так)
Объекты сокета. Вы создаете сокет с помощью процедуры сокета, передавая константу семейства адресов af / * для семейства (IPv4, IPv6) и константу типа сокета sock / * для типа сокета (TCP, UDP). протокол почти всегда должен быть равен нулю, если вы не создаете сырые сокеты; это неявно присутствует в типе сокета. Сокеты занимают файловый дескриптор в системе до тех пор, пока не закроются, что может произойти или не произойти автоматически в случае ошибки. Все сокеты создаются в неблокирующем режиме.
Аксессуаров:
- розетка-файл
- Дескриптор файла сокета.
- Семейство розеток
- Семейство сокетов, целочисленная константа.
- розетка тип
- Тип сокета, целочисленная константа.
- сокет-протокол
- Протокол сокета, целочисленная константа.
Обратите внимание, что сокеты также неявно создаются с помощью socket-connect / ai и socket-accept.
Пример:
(сокет af / inet sock / stream) ; => # <сокет fd: 19 af / inet сок / поток> (сокет af / inet6 sock / dgram) ; => #[константа] af / inet
[константа] af / inet6
[константа] af / unix
[константа] af / unspec
[процедура] (целое-> целое семейство адресов)
[процедура] (семейство адресов-> целочисленный символ)
Константы семейства адресов для создания сокета. Возможно преобразование между целочисленными константами и символами с помощью предоставленных процедур, но это сделано только для удобства отладки; API требует целочисленных констант.
[константа] носок / поток[константа] носок / грамм
[константа] носок / необработанный
[процедура] (целое-> int типа сокета)
[процедура] (тип сокета-> целочисленный символ)
Константы типа сокета для создания сокета.
[константа] ipproto / tcp[константа] ipproto / udp
[процедура] (целое число-> тип протокола int)
[процедура] (тип протокола-> целочисленный символ)
Константы протокола для создания сокета.
Адреса сокетов
[запись] sockaddr[процедура] (sockaddr? Sa)
[процедура] (sockaddr-family sa)
[процедура] (sockaddr-address sa)
[процедура] (порт sockaddr sa)
[процедура] (sockaddr-path sa)
[процедура] (sockaddr-> string sa)
Объект адреса сокета. sockaddr используется во всем API сокетов BSD для представления адреса локальной или удаленной конечной точки сокета.
Самый удобный конструктор адресов Интернет-сокетов — это inet-адрес. Основным конструктором адреса Интернет-сокета является адресная информация, которая более эффективна, но также более сложна в использовании. Для сокетов UNIX используйте unix-адрес.
Устройства доступа к объекту адреса сокета:
- sockaddr-family
- возвращает семейство адресов сокетов как целочисленную константу, например аф / инет.
- sockaddr-адрес
- возвращает адрес сокета в виде строки (для интернет-сокетов это IP-адрес).
- порт sockaddr
- возвращает порт сокета для интернет-сокетов; вызывать его для другого типа сокета — ошибка.
- sockaddr-path
- возвращает путь для сокетов UNIX или ошибку для других типов сокетов.
- sockaddr-> строка
- возвращает компактное представление адреса сокета в виде строки. Для Интернет-сокетов он возвращает «адрес», когда порт равен 0; в противном случае он возвращает «адрес: порт» для адресов IPv4 и «[адрес]: порт» для адресов IPv6.
Возвращает объект sockaddr, созданный из IP-адреса addr (строка) и порта порта (число или числовая строка). Если ввод адреса или порта неверен, возникает ошибка.
Если адрес #f, используется неуказанный адрес («::» или «0.0.0.0»). Если порт #f, используется неуказанный порт (целое число 0). Не указаны адрес и порт — это ошибка.
Обратите внимание, что если в вашей системе предпочтение отдается IPv6, неуказанный адрес #f обычно равен «::», а результирующий объект будет принадлежать к семейству af / inet6.Это может быть не то, что вы хотите, поэтому рекомендуется указать, какой неуказанный адрес (да, действительно) вы имеете в виду — «::» или «0.0.0.0» — вместо #f.
[процедура] (путь unix-адреса)Возвращает объект sockaddr, созданный на основе пути пути, подходящий для использования с сокетом в семействе адресов af / unix. Выдает ошибку, если сокеты UNIX не поддерживаются на вашей платформе.
Разрешение адреса
[процедура] (флаги протокола семейства ключей адресно-информационной службы #! Семейства (тип сокет / поток))[константа] AI / numerichost
[постоянный] AI / пассивный
[константа] ai / canonname
Ищет имя узла и имя службы и переводит их в числовые значения.Возвращает список объектов addrinfo, каждый из которых содержит адрес сокета (объект sockaddr), подходящий для использования в вызовах сокетов, таких как socket-bind и socket-connect.
Узел— это либо имя узла (строка), либо IP-адрес (строка). service может быть строкой, представляющей имя службы или номер порта, или целым числом. Если узел #f, он рассматривается как адрес обратной связи; однако, если задано значение ai / passive, он рассматривается как неуказанный адрес. Если служба #f, она рассматривается как неопределенная (0).
Аргументы ключевого слова принимают числовые константы и соответственно ограничивают возвращаемые адреса:
- семья
- Семейство адресов, af / inet или af / inet6, по умолчанию #f. Если #f, могут быть возвращены адреса IPv6 и IPv4, в зависимости от конфигурации вашей системы и IP-стека.
- тип
- Тип розетки; обычно sock / stream или sock / dgram, по умолчанию sock / stream. Может быть #f, но результаты могут отличаться в зависимости от системы, поэтому безопаснее указать одну.См. Примеры.
- протокол
- Тип протокола, обычно #f. Также может быть ipproto / tcp или ipproto / udp; однако некоторые системы (например, Windows) не создают правильный адрес сокета, если тип не указан, поэтому безопаснее просто указать значение для типа и оставить его как #f.
На поведение адресной информации может влиять значение флагов, которое должно быть побитовым ior (или просто +) любой из следующих констант:
- AI / numerichost
- Хост — это строка IP-адреса; не пытайтесь решить эту проблему.
- искусственный интеллект / пассивный
- Адрес сокета предназначен для использования в вызове bind (). Единственное отличие состоит в том, что адрес #f транслируется в неуказанный адрес «::» или «0.0.0.0», а не в адрес обратной связи.
- ai / canonname
- Включите каноническое (обычно FQDN) имя хоста в объект addrinfo. Если не указано, это поле будет #f.
Примеры:
(адрес-информация "localhost" "http") ; => (#[запись] addrinfo# # ) (адрес-информация "127.0.0.1" 53 тип: sock / dgram) ; => (# ) (адрес-информация "he.net" 80) ; => (# # ) (адрес-информация "he.net" 80 тип: #f) ; Возможный ответ в UNIX - возвращать адреса TCP и UDP. ; Может также просто вернуть TCP.; => (# # # # ) ; Возможный ответ в Windows - адреса сокетов недействительны для использования ; => (# # ) (адрес-информация #f "http") ; => (# # ) (адрес-информация #f "http" флаги: ai / passive) ; => (# # ) ; В качестве примера несогласованного поведения для каждой платформы обратите внимание, что ; последняя версия Ubuntu, среди прочего, возвращает вышеуказанное в обратном порядке. (адрес-информация "allie" 0 флагов: ai / canonname) ; => (# ) (адрес-информация #f #f) ; => ()
[процедура] (addrinfo? Ai)
[процедура] (addrinfo-family ai)
[процедура] (addrinfo-socktype ai)
[процедура] (addrinfo-protocol ai)
[процедура] (адресс-адрес ai)
[процедура] (addrinfo-canonname ai)
[процедура] (addrinfo-flags ai)
Запись с адресной информацией, возвращенная адресной информацией.
- addrinfo-address — адресный объект сокета sockaddr;
- addrinfo-family, addrinfo-socktype и addrinfo-protocol — числовые константы в семействах af /, sock / и ipproto / соответственно;
- addrinfo-canonname — это каноническое (FQDN) имя этого хоста, которое присутствует только в том случае, если использовался флаг ai / canonname; в противном случае #f;
- addrinfo-flags — это побитовое ИЛИ ai / flags, используемое при создании этого объекта. Система может сама устанавливать определенные флаги, так что это, вероятно, не очень полезно.
[константа] ni / numerichost
[константа] ni / numericserv
[константа] ню / дграмм
[константа] ni / namereqd
[константа] ni / nofqdn
По заданному объекту адреса сокета saddr выполняет обратный поиск для получения имен узла и службы, возвращая их как пару («узел». «Служба»). Если поиск имени хоста завершается неудачно, числовое представление адреса возвращается в виде строки.Если поиск номера службы не удается, он возвращается как целое число.
Объект адреса сокета обычно создается с помощью inet-адреса или получается из вызова сокета, например имя-сокета. Для удобства в сокете 0.2.1 и более поздних версиях, если saddr является строкой, она преобразуется в объект адреса сокета с помощью (inet-address saddr #f).
На поведение информации имени могут влиять ФЛАГИ. FLAGS может быть побитовым ior (или просто +) из следующих констант:
- ni / numerichost
- Не преобразовывать адрес узла в имя; вместо этого верните каноническое строковое представление адреса, как в inet_ntop ().(sockaddr-address saddr) возвращает то же представление.
- ni / numericserv
- Не пытайтесь преобразовать служебный номер в имя.
- ni / namereqd
- Если поиск имени хоста завершился неудачно, возникает ошибка.
- ni / nofqdn
- Возвращает только локальную часть имени хоста для локальных хостов.
- ню / дграм
- Найдите службу как службу дейтаграмм. Некоторые имена служб в TCP и UDP могут отличаться.
Примеры:
(имя-информация (inet-адрес "127.0,0.1 "80)) ; => ("локальный хост". "http") (имя-информация (inet-адрес ":: 1" 80)) ; => ("локальный хост". "http") (имя-информация (inet-адрес ":: 1" #f)) ; => ("локальный хост". 0) (имя-информация ":: 1") ; => ("локальный хост". 0) (имя-информация (inet-адрес ":: 1" 80) ni / numerichost) ; => (":: 1". "Http") (имя-информация (inet-адрес ":: 1" 80) (+ ni / numerichost ni / numericserv)) ; => (":: 1". 80) (имя-информация (inet-адрес "127.0.0.2" 80)) ; => ("127.0.0.2"."http") (имя-информация (inet-адрес "127.0.0.2" 80) ni / namereqd) ; => ошибка: указано имя узла или имя сервера или неизвестно (имя-информация (inet-адрес "2001: 470: 0: 64 :: 2" 80) ni / numericserv) ; => ("ipv6.he.net". 80) (имя-информация (имя-однорангового-сокета)) ;; s - сокет accept () ed ; => ("taco.universe12.dim". 31828)
Установка и демонтаж
[процедура] (подключение разъема so saddr)[процедура] (socket-connect / ai ais)
socket-connect подключается к удаленному адресу сокета saddr через сокет so.По завершении так будет подключено; при сбое подключения выдается ошибка. Возвращаемое значение не указано. Это неблокирующая операция; другие потоки SRFI-18 могут продолжать работу.
Если соединение не удается из-за отказа, сбоя сети, недоступности хоста или принудительного тайм-аута системы, возникает «временная» ошибка типа (exn i / o net transient), сигнализируя о том, что соединение может быть повторено позже, если это необходимо. Соединение также может вызвать ошибку (exn i / o net timeout) после (socket-connect-timeout) миллисекунд.Если возникает фатальная ошибка, возникает ошибка типа (exn i / o net), как и все другие процедуры сокета.
socket-connect / ai подключается к адресам в списке addrinfo ais последовательно до тех пор, пока соединение не будет успешным или пока не кончатся адреса. Если при подключении происходит фатальная ошибка, оно немедленно прерывается; но временные ошибки или ошибки тайм-аута заставляют его попробовать следующий адрес. Если все попытки терпят неудачу, возникает ошибка последней попытки. В случае успеха возвращаемое значение — это новый подключенный сокет соответствующего семейства и типа.
Примеры:
;; Подключиться к localhost: 22 через IPv4. (определите так (сокет af / inet sock / stream)) (Socket-connect so (inet-address "127.0.0.1" 22))
;; Подключиться к localhost: 22 через IPv6. (определите так (сокет af / inet6 sock / stream)) (Socket-connect so (inet-address ":: 1" 22))
;; Подключитесь к localhost: 22 через IPv4 и верните подключенный сокет. (разъем-подключение / ai (адрес-информация "localhost" 22 семейство: af / inet)) ; => #
;; Попробуйте подключиться к localhost: ssh через любое семейство адресов.;; В этом случае информация об адресе может возвращать петлю IPv6. ;; адрес ":: 1" и, возможно, "fe80 :: 1" вместе с обычным ;; IPv4 «127.0.0.1». socket-connect / ai попробует их все по порядку ;; и верните новый подключенный сокет. В иллюстративных целях ;; мы используем имя-сокета, чтобы показать, где мы соединились. (имя-сокета (socket-connect / ai (адрес-информация "localhost" "ssh"))) ; => #[процедура] (socket-bind so saddr);; Если ssh прослушивает :: 1 ; => # ;; При прослушивании по локальной петле связи ; => # 0.0.1: 22 "> ;; При прослушивании только 127.0.0.1 ; => ошибка: в соединении отказано ;; Если ssh не запущен
Привязывает сокет к адресу saddr. Возвращаемое значение не указано.
; Привязка к неуказанному IPv4-адресу на порту 8000. (определите так (сокет af / inet sock / stream)) (socket-bind so (inet-address "0.0.0.0" 8000))
; Привязка к неуказанному IPv6-адресу на порту 8000. Это также может ; разрешить соединения IPv4 в зависимости от настроек вашей системы.(определите так (сокет af / inet6 sock / stream)) (socket-bind so (inet-address "::" 8000))
; Привязка к неуказанному IPv6-адресу на порту 8000, ограничение ; подключения только к IPv6. (определите так (сокет af / inet6 sock / stream)) (установить! (только ipv6-v6? так) #t) (socket-bind so (inet-address "::" 8000))[процедура] (socket-listen so backlog)
Слушать входящие соединения на сокете с очередью соединений целочисленной длины. Этот вызов действителен только для сокетов, ориентированных на соединение (потоковых).
[процедура] (Socket-accept so)[процедура] (готовность к приему сокета? Итак)
socket-accept принимает соединение на прослушивающем сокете, поэтому возвращает новый объект подключенного сокета. Адрес однорангового узла может быть получен путем вызова имени узла сокета в сокете.
Это неблокирующая операция; другие потоки SRFI-18 могут продолжать работу в это время, хотя этот будет заблокирован. Если принятие не завершается в течение миллисекунд socket-accept-timeout, возникает ошибка тайм-аута.
Socket-Accept-Ready? проверяет, есть ли соединение, ожидающее принятия, чтобы вы могли избежать блокировки текущего потока. Однако, если одноранговый узел сбрасывает свое соединение между вашим тестированием и принятием, принятие, тем не менее, может заблокировать.
[процедура] (отключение сокета так как)[константа] закрыто / выкл.
[константа] закрыто / работает
[константа] выключено / rdwr
Отключите полнодуплексное соединение на сокете следующим образом:
- запорный / ряд
- запретить дальнейшее получение
- запр. / Зап.
- запретить дальнейшую отправку
- закрыто / RDWR
- запретить дальнейший прием и отправку
Обычно система закрывает само соединение при закрытии, поэтому вызывать это вручную нечасто.Одним из примеров использования является использование shut / wr, чтобы сообщить серверу, что вы закончили передачу, позволяя ему продолжать отправку вам.
[процедура] (закрытие гнезда так)Закройте гнездо так. Если соединение было установлено, сокет корректно завершает работу.
socket-close выдает ошибку, если close () не работает.
[процедура] (закрытие сокета * так)То же, что и закрытие сокета, за исключением того, что при закрытии сокета * , а не выдает ошибку, если close () завершается неудачно.
Это может быть полезно в определенном коде низкого уровня, например, после сетевой ошибки, но вы не должны использовать это, если вы не знаете, что делаете. Это может исчезнуть или изменить семантику в будущем.
Статус
[процедура] (имя-сокета так)Вернуть объект sockaddr, представляющий адрес локальной конечной точки сокета so. Если сокет не был привязан, он возвращает #f.
Имя процедуры является производным от getsockname (), поэтому для описания адреса сокета используется «имя».
[процедура] (имя-сокета так)Вернуть объект sockaddr, представляющий адрес удаленной конечной точки сокета so. Если соединение отсутствует, возвращает #f. Это можно использовать после подключения к сокету или для сокета, возвращаемого функцией socket-accept. Обратите внимание, что это также работает с «соединениями» UDP, сделанными с помощью socket-connect.
Имя процедуры является производным от getpeername (), поэтому для описания адреса сокета используется «имя».
Передача данных
Получение данных
[процедура] (получение сокета! Так что buf #! Необязательный (начало 0) (конец #f) (флаги 0))[процедура] (сокет-прием-готов? Итак)
Получает данные из сокета и записывает их в буфер, который может быть строкой или каплей.начало и конец — необязательные смещения в buf; вызов пытается прочитать end — start = len байтов. Если конец равен #f, он интерпретируется как конец большого двоичного объекта или строки.
Этот вызов будет заблокирован до тех пор, пока данные не станут доступны, но другие потоки могут продолжить работу. Если получение не завершается в течение миллисекунд socket-receive-timeout, возникает ошибка тайм-аута. Чтобы избежать блокировки текущего потока, вы можете проверить, готовы ли данные через socket-receive-ready ?.
Возвращает количество фактически полученных байтов (и обновляет buf как побочный эффект).
Для сокетов дейтаграммы, если len меньше, чем объем данных в следующей дейтаграмме, остальные данные безвозвратно теряются.
[процедура] (получение сокета, поэтому len #! Необязательно (флаги 0))Получает до len байтов от данных из сокета и возвращает их в виде строки (размер которой соответствует возвращаемым данным). В противном случае он ведет себя как socket-receive !.
[процедура] (получение-от сокета! Так что buf #! Необязательный (начало 0) (конец #f) (флаги 0))Как socket-receive !, но принимает данные через сокет дейтаграммы без установления соединения, возвращая 2 значения: количество прочитанных байтов и объект sockaddr, представляющий источник.
[процедура] (получение-от сокета, поэтому len #! Необязательно (флаги 0))Получает до len байтов от данных из сокета, поэтому возвращает два значения: строку (размер которой соответствует возвращаемым данным) и объект sockaddr, представляющий источник. В противном случае он ведет себя как прием через сокет !.
Отправка данных
[процедура] (отправка через сокет, поэтому buf #! Необязательно (начало 0) (конец #f) (флаги 0))Отправляет данные в сокет из буфера buf, который может быть строкой или большим двоичным объектом. начало и конец — необязательные смещения в buf; вызов пытается записать end — start = len байтов. Если конец равен #f, он интерпретируется как конец большого двоичного объекта или строки.
Этот вызов будет заблокирован до тех пор, пока не будут отправлены хотя бы некоторые данные, но другие потоки могут продолжить работу. Если отправка не завершается в течение (socket-send-timeout) миллисекунд, возникает ошибка тайм-аута.
Возвращает количество фактически отправленных байтов.
[процедура] (socket-send-to so buf saddr #! Необязательно (начало 0) (конец #f) (флаги 0))Подобно отправке сокета, но отправляет данные через сокет дейтаграммы без установления соединения в sockaddr saddr, возвращая количество фактически отправленных байтов.
[процедура] (socket-send-all so buf #! Optional (начало 0) (конец #f) (флаги 0))Отправляет все данные между началом и концом в буфере через подключенный сокет, таким образом, вызывая socket-send несколько раз, пока все данные не будут отправлены.
Данные отправляются кусками определенного размера (размер отправляемого сокета); последний отправленный кусок может быть меньше этого. Значение #f для socket-send-size будет пытаться отправить все оставшиеся данные при каждом вызове send (). Обратите внимание, что это разбиение работает как для подключенных сокетов датаграмм, так и для потоковых сокетов; вы можете использовать его для отправки большого буфера, разделенного, скажем, на 512-байтовые датаграммы.
Порты ввода-вывода
[процедура] (Socket-I / O-ports so)Создает входной порт I и выходной порт O, связанные с подключенным сокетом, таким образом, возвращая (значения I O). Эта процедура работает как с сокетами потока, так и с сокетами дейтаграмм.
Чтобы включить буферизацию вывода на портах сокетов потока, см. Параметр socket-send-buffer-size. Разумно установить его значение в 1024 байта.
Ниже приведено довольно подробное объяснение буферизации и фрагментации ввода и вывода, а также рекомендации по использованию с дейтаграммами.
socket-i / o-ports обычно используется с потоковыми сокетами. Входные данные всегда буферизуются в буфере размера (размер-буфера-приемника). Когда буфер пуст, socket-receive! вызывается один раз для чтения этого количества байтов. Выходные данные отправляются с помощью функции socket-send-all, поэтому их можно разделить на блоки по размеру (socket-send-size). Если вывод небуферизован, функция socket-send-all вызывается, как только данные записываются в порт.
Если вывод буферизуется путем установки (размер буфера отправки-сокета) на N, то перед отправкой данных буферизуется N символов.Обратите внимание, что отправляются только значения, кратные размеру буфера (любое превышение сохраняется в буфере). Например, если буфер может содержать 512 байтов и содержит 500 байтов, запись еще 526 байтов доведет общий неотправленный размер до 1026 байтов. 1024 байта (2 блока) записываются за один вызов socket-send-all, а последние 2 байта сохраняются в буфере.
Если заданы и размер выходного буфера, и размер блока, рекомендуется сделать размер блока кратным размеру буфера; например, размер буфера = 1024, размер блока = 8192. Если не выровнен, могут быть отправлены посторонние небольшие пакеты. Размер буфера почти всегда меньше или равен размеру блока. Если больше, то он должен быть кратен размеру блока. Использование степеней двойки для обоих удовлетворяет всем случаям.
Обратите внимание, что порты ввода-вывода сокетов также могут использоваться для создания портов на подключенных сокетах дейтаграмм. Входные данные всегда буферизуются, и один фрагмент до размера (размер-приема-буфера) считывается в буфер всякий раз, когда буфер пуст. (Если дейтаграмма меньше, чем размер буфера, повторные чтения не выполняются; скорее, буфер используется до тех пор, пока снова не будет исчерпан.Любая дейтаграмма, превышающая размер буфера, будет усечена.) Выходные данные делятся на блоки по размеру (размер-отправки-сокета), как и в случае отправки-сокета-все — это полезно для установки максимального ограничения на размер передаваемой дейтаграммы. Наконец, можно включить буферизацию вывода, которая ведет себя так же, как и с портами TCP; символы буферизуются и отправляются блоками размером (размер буфера отправки). Опять же, чтобы избежать чрезмерной передачи, размер блока должен быть кратным размеру буфера или наоборот.
Например, для приема датаграмм размером до 4K, буферизации 128 символов за раз и одновременной отправки 128-, 256-, 384- или 512-байтовых дейтаграмм:
(параметризация ((размер буфера приема-сокета 4096) (размер буфера отправки-сокета 128) (размер сокета 512)) (определите так (socket-connect / ai (адресно-информационный тип порта хоста: sock / dgram))) (define-values (i o) (socket-i / o-ports так)) ;; полезный пример был бы хорош ...)[процедура] (порт-сокет-> порт сокета)
Возвращает объект сокета, связанный с портом порта ввода или вывода. Оттуда вы можете получить дескриптор файла с помощью socket-fileno.
В качестве альтернативы поддерживается port-> fileno из posix для получения дескриптора файла. (Также см. Ошибки и ограничения.)
[процедура] (порт отказа от сокета)Помечает порт входного или выходного порта сокета как заброшенный. Обычно, когда входной порт сокета закрыт, сторона чтения соединения закрывается; аналогичным образом закрытие выходного порта отключает сторону записи.Если пометить порт как заброшенный, это отключение будет пропущено. Это полезно для обеспечения того, чтобы соединение оставалось открытым после закрытия порта.
Сокет остается закрытым после закрытия обоих портов, независимо от их статуса заброшенного.
Параметры
[параметр] (время ожидания соединения сокета, мс) [по умолчанию: #f][параметр] (тайм-аут приема-сокета, мс) [по умолчанию: #f]
[параметр] (время ожидания приема сокета, мс) [по умолчанию: 1 минута]
[параметр] (тайм-аут отправки сокета, мс) [по умолчанию: 1 минута]
Таймауты в миллисекундах для операций подключения, приема, отправки и принятия.Если этот таймаут превышен, возникает ошибка (exn I / O net timeout). Если #f, операция никогда не истекает (если система не заставит это сделать).
[параметр] (размер буфера отправки сокета n) [по умолчанию: #f][параметр] (размер отправки сокета n) [по умолчанию: 16384]
[параметр] (размер буфера приема-сокета n) [по умолчанию: 4096]
Эти параметры используются в основном для настройки поведения портов сокета и вступают в силу при создании портов.
(размер-буфера-отправки-сокета) — размер буфера, используемый портами вывода сокета. Если #f, буферизация не выполняется. Подходящим значением является степень двойки, например 1K или 4K.
(размер-отправки-сокета) используется портами вывода сокета и является размером, используемым в одном вызове для отправки-сокета с помощью socket-send-all. Это может быть #f, что означает бесконечное число, чтобы все оставшиеся данные отправлялись при каждом вызове. Если установлено, оно обычно должно быть кратным (размер-буфера отправки-сокета), если буферизация также включена.Подходящим значением является степень 2, например 8K или 16K.
(размер буфера приема-сокета) — это размер, используемый для входного буфера на входных портах сокета. Уместно значение степени 2, например 4K. Буферизацию ввода нельзя отключить.
Интерфейс опций гнезда
Значения опций сокетаBSD имеют существенно разные типы: логические флаги (TCP_NODELAY), целые числа (SO_SNDBUF), структуры (SO_LINGER) и т. Д. Тем не менее, нам нужен последовательный интерфейс и элемент безопасности типов.Таким образом, для каждой опции мы предоставляем уникальную процедуру получения / установки, которая выполняет проверку типов и маршалирует (или демаршалирует) данные по мере необходимости.
Каждый геттер / сеттер принимает аргумент сокета. «Сокет» — это либо номер дескриптора файла, возвращаемый вызовом socket (), либо объект сокета, как указано в этом расширении. Обобщенный набор СРФИ-17! используется в геттерах для установки параметров сокета.
(tcp-no-delay? S); => #t или #f (установить! (tcp-no-delay s) #t)
Выдается ошибка, если вызов сокета завершается неудачно, если переданное значение имеет неправильный тип, или если вы пытаетесь установить параметр только для чтения.
Ошибка (exn i / o net unsupported) выдается, если вы пытаетесь использовать параметр сокета, который вообще не определен на платформе или определен, но не поддерживается операционной системой. Обратите внимание, что некоторые платформы, особенно Windows, могут возвращать ложное срабатывание для «неподдерживаемого параметра», когда оно действительно указывает на ошибку использования (неправильный тип сокета или значение параметра).
Дополнительные аксессуары для розеток
Ниже приведен список опционных процедур и их типов значений. Имена процедур представляют собой подробные варианты связанных с ними имен констант.Например, SO_REUSEADDR становится адресом повторного использования.
В настоящее время поддерживаются только логические и целые числа и их варианты только для чтения. Намерение состоит в том, чтобы, по крайней мере, дополнительно поддерживать интервалы времени, задержки, структуры ip_mreq и ipoptions. Ниже приведен пример поддержки задержки в низкоуровневом интерфейсе.
[процедура] (адрес-повторного использования?) [Так / reuseaddr][процедура] (так-отладка) [так / отладка]
[процедура] (so-keep-alive? S) [so / keepalive]
[процедура] (so-dont-route? S) [so / dontroute]
[процедура] (so-broadcast? S) [so / broadcast]
[процедура] (so-oob-inline? S) [so / oobinline]
[процедура] (so-accept-connections? S) [so / acceptconn] (r / o)
[процедура] (so-send-buffer s) [so / sndbuf]
[процедура] (так-прием-буфер) [so / rcvbuf]
[процедура] (so-send-low-water s) [so / sndlowat]
[процедура] (so-receive-low-water s) [so / rcvlowat]
[процедура] (так-ошибка s) [так / ошибка] (r / o)
[процедура] (so-type s) [so / type] (r / o)
Геттеры / сеттеры для логических и целочисленных параметров уровня сокета, где s — объект сокета или целочисленный файловый дескриптор. Для установки опции используйте обобщенный набор SRFI-17:
(установить! (Адрес-повторного использования? S) #t)
«(r / o)» указывает, что опция предназначена только для чтения; если вы попытаетесь установить это значение, возникнет ошибка.
В качестве специального примечания к so-reuse-address ?, на платформах Windows сначала будет предпринята попытка использовать параметр so / exclusiveaddruse, поскольку этот параметр соответствует семантике UNIX. Если это не удастся, он вернется к so / reuseaddr, что позволяет любым процессам повторно привязать ранее привязанный адрес и порт.
[процедура] (tcp-no-delay? S) [tcp / nodelay][процедура] (tcp-no-push? S) [tcp / nopush]
[процедура] (tcp-no-options? S) [tcp / noopt]
[процедура] (tcp-keep-alive s) [tcp / keepalive]
[процедура] (tcp-max-segment-size s) [tcp / maxseg]
Геттеры / сеттеры для параметров сокетов уровня TCP (ipproto / tcp). s — объект socket или целочисленный файловый дескриптор.
[процедура] (с включенным заголовком ip) [ip / hdrincl][процедура] (ip-тип службы) [ip / tos]
[процедура] (ip-time-to-live s) [ip / ttl]
Геттеры / сеттеры для параметров сокетов уровня IP (ipproto / ip). s — это объект socket или целочисленный файловый дескриптор.
[процедура] (только для ipv6-v6? S) [только для ipv6 / v6]Геттеры / сеттеры для параметров сокетов уровня IPv6 (ipproto / ipv6).s — это объект socket или целочисленный файловый дескриптор.
Интерфейс опциональной розетки низкого уровня
Также предоставляется интерфейс опций гнезда низкого уровня. Это сделано для того, чтобы позволить вам использовать константы, определенные выше (или ваши собственные), когда не реализован высокоуровневый интерфейс. Этот интерфейс может получать или устанавливать произвольное содержимое опций; вы не ограничены предопределенными типами, такими как целочисленные или логические. Проверка правильности переданного значения параметра не выполняется, поскольку это задача высокоуровневого интерфейса.
[процедура] (значение уровня set-socket-option s)Установить значение параметра имени на уровне сокета на сокете s равным val. val может быть фиксированным или логическим. Это также может быть капля или строка; если это так, необработанное содержимое передается опции, что полезно, когда требуется структура. Возвращаемое значение не указано.
Если запрашивается неподдерживаемая опция или уровень, возникает условие типа (exn i / o net unsupported).
Примечание: из-за капризов выравнивания элементов конструкции (и 32 vs.64-битные размеры), обычно небезопасно упаковывать необработанные данные самостоятельно в большой двоичный объект или вектор SRFI-4. Вместо этого вы должны рассматривать содержимое большого двоичного объекта как структуру C. См. Более длинный пример внизу страницы, чтобы узнать больше.
(set-socket-option S ipproto / tcp tcp / nodelay 1) (set-socket-option S ipproto / tcp tcp / nodelay (make-string 4 # \ x0)) (set-socket-option S sol / socket so / rcvlowat (u32vector-> blob / shared (u32vector # x01020304)))[процедура] (get-socket-option s имя уровня #! необязательный (len #f) )
Получить значение имени параметра на уровне сокета для сокета s.