Может ли FIFO или другой объект не блокировать доступ писателя, а вместо этого просто отбрасывать данные?

Вам нужно установить пакеты той же архитектуры, что и ваш пакет TeXstudio, т.е. x86_64; ищите qt-x11-4.8.5-11.el7.x86_64 вместо qt-x11-4.8.5-11.el7.i686.

1
20.05.2018, 15:56
1 ответ

Вы можете транслировать UDP. Это часть sender , передайте ей что-нибудь:

socat - UDP-DATAGRAM:127.255.255.255:50011,sourceport=50022,broadcast

Приемники используют это, они могут присоединиться или выйти из группы в любое время:

socat - UDP-LISTEN:50011,bind=127.255.255.255,sourceport=50022,reuseaddr

Примечания и пояснения:

  • UDP не гарантирует, что пакеты будут приходить по порядку (см. это)
  • 50011и 50022— это номера портов, которые вы выбираете сами.
  • Адрес 127.255.255.255означает, что отправитель осуществляет широковещательную рассылку через петлевой интерфейс, при желании вы можете настроить его для широковещательной передачи в локальной сети.
  • Точно так же bind=127.255.255.255должен ограничивать приемников этим интерфейсом, чтобы вам не приходилось беспокоиться о (мошенниках? )UDP-пакеты из других источников, если таковые имеются.
  • Фиксированный sourceportпо двум причинам :
    • получатели не "увидят" другого (мошенника? )отправитель, который осуществляет широковещательную рассылку на тот же адрес и порт, но с другого (возможно, случайного )исходного порта;
    • после того, как отправитель по какой-либо причине прерван, вы можете перезапустить его, и все существующие получатели не увидят разницы; если отправитель использовал случайный исходный порт, существующие получатели в целом не «увидели» нового отправителя, потому что они оставались фиксированными на старом исходном порту.
  • reuseaddrпозволяет сосуществовать нескольким приемникам.
  • Технически вы можете добавить reuseaddrк отправителю, это позволит вам запускать несколько отправителей. Это может привести к чередованию вывода на принимающей стороне, что не рекомендуется.
  • Бегущий отправитель предотвратит другого (мошенника? )отправитель не может использовать один и тот же набор адресов и портов. Однако, как только ваш отправитель будет удален, его место может занять другой. Если у вас есть root-доступ, вы можете выбрать sourceportменьше, чем 1024. Большинство ОС -es не позволяют обычным пользователям привязываться к этим портам (имя "привилегированные порты" ); таким образом, пользователи не смогут выдавать себя за вашего отправителя, даже если он мертв. Однако ресиверы, управляемые обычными пользователями,могут использовать привилегированный порт в качестве своего sourceport. Чтобы гарантировать, что только root может получать, измените другой порт(50011в моем примере )на привилегированный.
3
28.04.2021, 23:46

Теги

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