创建一个原始套接字 - Debian + 代码块

Creating a raw socket - Debian + Codeblocks

本文关键字:Debian 代码 套接字 原始 一个 创建      更新时间:2023-10-16

我目前正在研究我的学士学位论文的开始阶段,我的问题是实现网关(又名路由器(。我目前正在尝试打开一个原始套接字,以便我可以切碎一个以太网数据包并检查它包含哪些不同类型的字段。

我正在使用代码块 IDE 在 Debian VM 上编写C++代码。

当尝试通过以下代码打开原始套接字时,我收到一条错误消息:

    Error creating raw socket: Operation not permitted

法典:

    int CreateRawSocket(int protocol_to_sniff)
    {
        int s;
        if((s = socket(PF_PACKET, RAW_SOCK, htons(protocol_to_sniff))) == -1)
        {
            perror("Error creating raw socket");
            exit(-1);
        }
        return s;
    }
    int main()
    {
    int s = CreateRawSocket(ETH_P_ALL);
    }

我已经搜索了一下,但我似乎无法解决问题,尽管我认为我知道问题是什么。到目前为止,我已经发现这是权限问题,但我不知道如何授予代码块 sudo 权限。

有什么想法吗?

解决了。其实很简单。

我输入:

     sudo codeblocks

它打开了具有 sudo 权限的代码块,但我必须保持该终端窗口运行,否则它会关闭代码块。