【问题标题】:Is netlink socket a client/server mode?netlink 套接字是客户端/服务器模式吗?
【发布时间】: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。

标签: c linux netlink


【解决方案1】:

对于这个问题,我尝试了很多方法来测试。现在我得出一个结论:当我们使用netlink进行内核和用户空间的通信时,你必须先在内核中创建netlink并开始成功,用户空间的netlink套接字只能创造成功。因此,只有当你在上面做得好时,沟通才能建立成功。

【讨论】:

    猜你喜欢
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2011-08-15
    • 2017-05-26
    • 2023-03-11
    • 1970-01-01
    • 2018-06-10
    相关资源
    最近更新 更多