Домен AF_UNIX - почему использование локальные имена файлов только?

Вы можете рекурсивно добавлять слушателей к элементу управления и любым дочерним элементам (если он составной), используя что-то вроде этого:

private void hookRecursively(Control c, MouseListener listener) {
    c.addMouseListener(listener);

    if (c instanceof Composite) {
        Control[] children = ((Composite) c).getChildren();
        for (Control element : children) {
            hookRecursively(element, listener);
        }
    }
}
7
задан Jonathan Leffler 23 April 2009 в 19:20
поделиться

3 ответа

Сокет домена Unix или сокет IPC (сокет межпроцессного взаимодействия) - это конечная точка передачи данных, которая похожа на интернет-сокет, но не использует сетевой протокол для связи. Он используется в операционных системах POSIX для межпроцессного взаимодействия. Правильный стандартный термин POSIX - POSIX Local IPC Sockets.

Соединения домена Unix отображаются в виде потоков байтов, очень похоже на сетевые соединения, но все данные остаются на локальном компьютере. Доменные сокеты UNIX используют файловую систему в качестве адресного пространства имен, т.е. процессы на них ссылаются как на inode в файловой системе. Это позволяет двум разным процессам открывать один и тот же сокет для связи. Однако фактическая связь (обмен данными) не использует файловую систему, а буферизируется в памяти ядра.

В дополнение к отправке данных,

12
ответ дан 6 December 2019 в 09:22
поделиться

Конечные точки сокетов домена UNIX представлены файлами в файловой системе (а не хостом / портом).

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

Преимущество использования файловой системы в качестве пространства имен для конечных точек состоит в том, что могут быть применены обычные права доступа к файлам и ACL - если вы не можете открыть конечную точку Вы не можете подключиться. IP-сокеты не имеют такого механизма.

4
ответ дан 6 December 2019 в 09:22
поделиться

Это означает, что если вы создаете сокет AF_UNIX на диске NFS, который совместно используется двумя компьютерами A и B, у вас не будет процесса записи данных в сокет unix и процесс на B читает данные из этого сокета.

Связь происходит на уровне ядра, и вы можете передавать данные только между процессами, которые находятся в одном ядре.

4
ответ дан 6 December 2019 в 09:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: