Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
setsockopt返回errno=2_C_Sockets - Fatal编程技术网

setsockopt返回errno=2

setsockopt返回errno=2,c,sockets,C,Sockets,我正在创建一个UDP套接字(centos 6),我想发送广播消息。一切正常,创建套接字正常-套接字(..)返回值=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); } int val=

我正在创建一个UDP套接字(centos 6),我想发送广播消息。一切正常,创建套接字正常-套接字(..)返回值=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);
      }
int val=1;
if(setsockopt(a,SOL_套接字,SO_广播,&val,sizeof(val))<1){
调试(“setsockoopt失败,错误号:%d,套接字%d”,错误号,a);
}
setsockopt将errno设置为值=2。通讯正常,我向x.x.x.255主机发送udp数据包,我所有的应用程序都收到了它,但我想知道错误号是从哪里来的(错误号=2=没有这样的文件或目录)

致意

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

这是从成功时的返回值0得出的,所以这只是你的条件不对。如果没有错误,errno的值是不相关的,这就是为什么这里会得到一个相当荒谬的值

if (setsockopt(a, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val)) != 0){
这就是你需要的

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

这是从成功时的返回值0得出的,所以这只是你的条件不对。如果没有错误,errno的值是不相关的,这就是为什么这里会得到一个相当荒谬的值

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

是您所需要的。

您需要具体说明操作系统/版本。试试char val='1'和sizeof(char)这是beej说的:'//char broadcast='1';///如果这不起作用,请尝试“您需要明确操作系统/版本。try char val='1'和sizeof(char)这是beej说的:'//char broadcast='1';///如果不起作用,试试这个