1

私は現在、学士論文の開始段階に取り組んでおり、問題はゲートウェイ (別名ルーター) を実装することです。私は現在、生のソケットを開こうとしているので、イーサネット パケットをシュレッドして開き、そこに含まれるさまざまな種類のフィールドを確認できます。

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 パーミッションを与える方法についての手がかりはありません。

何か案は?

4

1 に答える 1

0

解決しました。それは実際には本当に簡単でした。

入った:

     sudo codeblocks

sudo権限でコードブロックを開きましたが、そのターミナルウィンドウを実行したままにしておく必要がありました。そうしないと、コードブロックがシャットダウンされました。

于 2013-10-10T13:36:02.387 に答える