setsockopt返回errno=2
我正在创建一个UDP套接字(centos 6),我想发送广播消息。一切正常,创建套接字正常-套接字(..)返回值=25,但: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=
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';///如果不起作用,试试这个