现在我遇到了麻烦:我的netlink用于内核和用户空间通信。当我只启动用户空间的netlink套接字时,它会给我一个错误:
不支持proctol
我的源代码是:
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模型。你同意我的意见吗?
答案 0 :(得分:2)
对于这个问题,我尝试了很多方法进行测试。现在我得出一个结论:当我们使用netlink进行内核和用户空间之间的通信时,你必须首先在内核中创建netlink并开始成功,netlink用户空间中的套接字只能创造成功。所以沟通只有在你做得好的时候才能取得成功。