Нужно иметь неблокирующие именованные каналы, способные к двусторонней связи в c на Linux - PullRequest
3 голосов
/ 13 мая 2010

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

Спасибо

Ответы [ 2 ]

5 голосов
/ 13 мая 2010

Возможные варианты:

  1. Сокеты локального домена: семейство AF_LOCAL с типом SOCK_STREAM, SOCK_DGRAM, SOCK_SEQPACKET.Сокет может быть «в памяти», то есть вы можете подключиться к нему с помощью уникальной строки, или это может быть файл сокета в файловой системе.Он работает как любой сетевой сокет в полнодуплексном режиме.

  2. Два канала: один для чтения, другой для записи (наоборот для другого процесса).Может быть немного сложнее отслеживать два канала, в отличие от сокета локального домена.

Полезная ссылка Проверьте часть на Pipes и часть наUnix Sockets.

0 голосов
/ 19 мая 2010

Рассматривали ли вы использование select() для обработки чтения именованного канала?

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