Arhn - архитектура программирования

В чем разница между трубой и розеткой?

Оба могут использоваться для связи между разными процессами,

какая разница?

19.08.2010

  • Тема звучит как начало плохой шутки 19.08.2010

Ответы:


1

В Windows есть два типа каналов: анонимные каналы и именованные каналы. Анонимные каналы соответствуют (довольно) близко к каналам Unix - типичное использование - родительский процесс, чтобы настроить их для наследования дочерним процессом, часто подключенным к стандартным потокам ввода, вывода и / или ошибок дочернего процесса. В свое время анонимные каналы были реализованы совершенно иначе, чем именованные каналы, поэтому они (в одном примере) не поддерживали перекрывающийся ввод-вывод. С тех пор это изменилось, поэтому анонимный канал в основном представляет собой именованный канал с неизвестным вам именем, поэтому вы не можете открыть его по имени, но он по-прежнему имеет все другие функции именованного канала (например, вышеупомянутые возможности перекрывающегося ввода-вывода).

Именованные каналы Windows больше похожи на сокеты. Они возникли в OS / 2, где изначально были основным механизмом для создания клиент-серверных приложений. Изначально они были построены на основе NetBIOS (т. Е. Использовали NetBIOS как для адресации, так и для транспортировки). Они тесно интегрированы с такими вещами, как проверка подлинности Windows, поэтому вы можете (например) иметь сервер именованного канала, олицетворяющий клиента, чтобы ограничить сервер выполнением действий, которые клиент мог бы делать, если бы входил в систему напрямую. Совсем недавно MS приложила некоторые усилия, чтобы избавиться от зависимости от NetBIOS, но даже несмотря на то, что теперь они могут использовать IP в качестве своего транспорта (и DNS для адресации, IIRC), они все еще используются в основном для компьютеров Windows. Основное использование на других машинах - имитация Windows, например, запуск Samba.

19.08.2010

2

(Без зазрения совести скопировано с http://www.perlmonks.org/?node_id=180842)

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

19.08.2010
  • Каналы также позволяют общаться между разными хостами. Обратите внимание, что он имеет тег [Windows], поэтому мы говорим здесь о каналах Windows, а не Unix. 19.08.2010
  • Можно ли использовать одну трубу несколько раз? Как и в этой статье, мне кажется, что канал можно использовать только один раз (будет закрыт после использования): msdn.microsoft.com/en-us/library/aa365588%28v=VS.85%29.aspx 19.08.2010
  • @Jerry - true - как только это произойдет (межмашинное взаимодействие), будет ли большая разница между конвейером и сокетом, по крайней мере, с точки зрения скорости? 19.08.2010
  • Я недостаточно недавно сделал тест, чтобы действительно знать. Я тестировал один раз (~ 1995 г.), и конвейеры выходили быстрее, но это не имеет большого значения для более поздних версий Windows. 19.08.2010

  • 3

    (С верхней части моей головы)

    Трубка: трубка с небольшой чашей на одном конце; используется для курения табака

    Гнездо: приемник, в который что-то вставляется (трубка, зонд или конец кости).

    В любом случае:

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

    19.08.2010
  • Это проблема с именованием вещей, это сложно. В мире Windows именованный канал больше похож на сокет и используется для подключения клиентов к серверам на разных машинах. 19.08.2010
  • @Greg Hewgill: Хороший аргумент, однако, именованные каналы и сокеты функционально не эквивалентны; сокеты предоставляют больше возможностей (для начала, они двунаправленные). согласно stackoverflow.com/questions/1235958/ 19.08.2010
  • @VoodooChild, это правда? Я всегда слышал, что каналы также можно использовать для связи между двумя не связанными между собой процессами. 19.08.2010
  • @VoodooChild: хотя вы можете создать именованный канал как только для входящего или только для исходящего, вы также можете создать его как дуплексный, если хотите. msdn.microsoft.com/en-us/library/aa365150 (VS.85) .aspx 19.08.2010
  • @Jerry Coffin: вы правы в контексте именованных каналов в Windows. То же самое неверно, если мы не говорим об окнах! 19.08.2010
  • @wamp: ознакомьтесь с ответом Роджера Остина по следующей ссылке stackoverflow.com/questions/1746075/ .... Хотя вопрос касается локального IPC в Windows, он может ответить на некоторые из ваших вопросов 19.08.2010

  • 4

    Сокеты будут использовать какой-то IP-протокол, такой как TCP / IP или UDP, поэтому они будут медленнее, но ваш код будет более переносимым, если вам нужно будет общаться по сети. Существует третий подход Shared mem и четыре порта Mach (в этом случае я не уверен, что он будет работать с Windows)

    19.08.2010

    5

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

    19.08.2010
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..