setsockopt返回errno = 2

时间:2011-09-21 10:21:58

标签: c sockets

我创建一个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设置为value = 2. Communictaion工作,即时发送udp数据包到xxx255主机,我的所有应用程序都将它重新收到它,但我想知道该错误来自哪里(错误= 2 =没有这样的文件或目录)< / p>

最好的问候

1 个答案:

答案 0 :(得分:5)

  

成功完成后,返回值0;否则   返回值-1,并设置全局变量errno以指示   错误。

这是setsockopt manpage成功时返回0,所以只是你的情况是错的。如果没有错误,那么errno的值是不相关的,这就是为什么你得到一个相当荒谬的价值。

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

是你需要的。