setsockopt返回errno = 2

Jos*_*siP 1 c sockets

我正在创建一个UDP套接字(centos 6),我想发送广播消息。一切正常,创建套接字有效-socket(..)返回value = 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);
      }
Run Code Online (Sandbox Code Playgroud)

setsockopt将errno设置为value =2。Communictaion工作正常,我将udp数据包发送到xxx255主机,我的所有应用程序都将其接收,但是我想知道errno的来源(errno = 2 =没有此类文件或目录)

最好的祝福

fvu*_*fvu 5

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

那是来自setsockopt联机帮助页,如果成功返回0,所以这只是您的情况是错误的。如果没有错误,则errno的值无关紧要,因此这就是为什么您得到一个相当荒谬的值的原因。

if (setsockopt(a, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val)) != 0){
Run Code Online (Sandbox Code Playgroud)

是您所需要的。