【发布时间】:2014-12-23 03:35:17
【问题描述】:
现在我遇到了一个问题:我的 netlink 用于内核和用户空间通信。当我只启动用户空间的netlink socket时,会报错:
不支持协议
我的源代码是:
if((sk_fd = socket(PF_NETLINK, SOCK_RAW, netlink_id)) == -1)
{
printf("socket error:%s\n", strerror(errno));
return false;
}
其中netlink_id是1567。但是当我提前启动内核netlink时,它就可以正常工作了。
所以我认为netlink是一个c/s模型。你同意我的观点吗?
【问题讨论】:
-
请说明您所说的“c/s 模型”是什么意思。明确。不要让我们猜测。
-
是的,客户端/服务器模型。
-
这个问题我试了很多次,内核和用户空间的通信都是用netlink。内核中的netlink socket必须先启动,再启动用户的。当你这样做时,你将成功使用netlink。