创建一个原始套接字 - Debian + Codeblocks

时间:2013-10-09 14:40:00

标签: c++ sockets debian codeblocks

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

我正在使用Codeblocks 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权限。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

解决了它。实际上这很简单。

我进入了:

     sudo codeblocks

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