我正在开发一个实验性的 Linux 内核模块,所以...
如何从 Linux 内核UDP 广播?
最佳答案
-13 是-EACCES。你有设置 SO_BROADCAST 吗?我相信 sock_sendmsg 返回 -EACCES 如果未设置 SO_BROADCAST 并且您正在发送到广播地址。
您正在寻找
你在什么内核版本下开发?我想简要浏览一下内核源代码。我没有看到如何从 sock_set 返回 -ENOPKG,但我确实看到可以返回 -ENOPROTOOPT(在内核 2.6.27 中是错误号 92)。
哦——如果您愿意,请在您设置 SO_BROADCAST 的地方重新发布那段代码。我没有记下它,我想再看一遍。
尝试用 SOL_UDP 调用它。我认为这就是您要找的。我在任何地方都没有 2.6.18 构建环境设置来玩这个,但试一试。
不——没关系——这不会做你想做的。我应该在源代码中进一步阅读。我会继续寻找。这有点有趣。
我想你可以自己设置广播标志! 微笑
lock_sock(sock->sk);
sock->sk->broadcast = 1;
release_sock(sock->sk);
你把我难住了,我得去 sleep 了。我确实找到了这段可能有帮助的代码,尽管这些人并没有进行广播。
http://kernelnewbies.org/Simple_UDP_Server
祝你好运 -- 我希望我能为你解决这个问题。
关于linux - 如何从 Linux 内核进行 UDP 广播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/346361/