Использование sockrtpairs и сообщений OOB(out-of-band data)?

Все о программировании под *nix
Anonymous

Использование sockrtpairs и сообщений OOB(out-of-band data)?

Сообщение Anonymous »

Возникла необходимость использовать в программе socketpairs с типом передачи SOCK_STREAM. В последствии обнаружил, что есть такая штука как сообщения OOB, идущие вне основного потока, которые существенно облегчают задачу. Но при попытке отправить такое сообщение возникает ошибка EOPNOTSUPP(Operation not supported). Это значит, что принципиально невозможно использовать OOB и socketpairs, или нужно какой-нибудь флаг указать или еше что-нибудь сделать, чтобы наладить передачу?

Аватара пользователя
mend0za
Неотъемлемая часть форума
Сообщения: 2332
Зарегистрирован: 30 авг 2002, 12:33
Откуда: Minsk

Сообщение mend0za »

man 7 tcp

Код: Выделить всё

      TCP supports urgent data.  Urgent data is used to signal  the  receiver
       that  some  important  message  is  part of the data stream and that it
       should be processed as soon as possible.  To send urgent  data  specify
       the  MSG_OOB option to send(2).  When urgent data is received, the ker-
       nel sends a SIGURG signal to the reading process or the process or pro-
       cess  group  that  has  been  set for the socket using the SIOCSPGRP or
       FIOSETOWN ioctls. When  the  SO_OOBINLINE  socket  option  is  enabled,
       urgent  data  is put into the normal data stream (and can be tested for
       by the SIOCATMARK ioctl), otherwise it can be only  received  when  the
       MSG_OOB flag is set for sendmsg(2).
И увидел я зверя, выходящего из тундры. И число его было 3.14159265358979324...

Anonymous

Вопрос снят

Сообщение Anonymous »

Не вопрос, TCP поддерживает urgent data, но он работает только в internet namespace.

При использовании функции socketpair() получается пара сокетов в локальном пространстве имен с протоколом по дефолту(другие для них не определены), который не поддерживает OOB.

Всем спасибо.

Ответить