我正在创建一个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 =没有此类文件或目录)
最好的祝福
成功完成后,返回值0;否则,返回0。否则,返回值-1,并且将全局变量errno设置为指示错误。
那是来自setsockopt联机帮助页,如果成功返回0,所以这只是您的情况是错误的。如果没有错误,则errno的值无关紧要,因此这就是为什么您得到一个相当荒谬的值的原因。
if (setsockopt(a, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val)) != 0){
Run Code Online (Sandbox Code Playgroud)
是您所需要的。