我正在创建一个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);
}setsockopt将错误号设置为值= 2。通信正常,即时通信向x.255主机发送udp数据包,我的所有应用程序都会收到它,但我想知道错误号是从哪里来的(errno=2=no这样的文件或目录)
诚挚的问候
发布于 2011-09-21 18:27:07
如果成功完成,则返回值0;否则返回值-1,并设置全局变量errno以指示错误。
这是因为setsockopt manpage在成功时返回0,所以这只是你的条件错了。如果没有错误,则errno的值是不相关的,这就是为什么在这里您会得到一个相当荒谬的值。
if (setsockopt(a, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val)) != 0){就是你需要的。
https://stackoverflow.com/questions/7498191
复制相似问题