setsockopt возвращает errno = 2 - PullRequest
       3

setsockopt возвращает errno = 2

1 голос
/ 21 сентября 2011

Я создаю сокет UDP (centos 6), по которому я хочу отправить широковещательное сообщение.Все работает, создание сокетов работает - socket (..) возвращает значение = 25, но:

int val = 1;
      if (setsockopt(a, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val)) < 1){
          debug("setsockoopt failed with errno: %d, socket %d", errno, a);
      }

setsockopt устанавливает errno в значение = 2. Связь работает, я отправляю пакет udp на хост xxx255, и все моиприложения получают его, но мне интересно, откуда это errno пришло (errno = 2 = нет такого файла или каталога)

наилучшие пожелания

1 Ответ

5 голосов
/ 21 сентября 2011

После успешного завершения возвращается значение 0; в противном случае возвращается значение -1, а глобальная переменная errno устанавливается для указания ошибка.

Это из справочной страницы setsockopt возвращает 0 в случае успеха, так что это просто ваше условие, что не так. Если ошибки не было, значение errno не имеет значения, и поэтому здесь вы получаете довольно абсурдное значение.

if (setsockopt(a, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val)) != 0){

это то, что вам нужно.

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