同时创建RAW_SOCKET错误,如不允许操作

时间:2015-01-17 12:53:38

标签: c sockets voip

在我的Android应用程序中我想创建RAW SOCKET但是当我尝试通过以下代码创建它时,它会给出错误,例如不允许操作。

int sd = socket(AF_INET, SOCK_RAW, IPPROTO_UDP);
if(sd < 0)
{
    ortp_warning("socket() error %s",getSocketError());
    // If something wrong just exit
    //exit(-1);
}
else
{
    ortp_warning("socket() - Using SOCK_RAW socket and UDP protocol is OK.\n");
}

我该如何解决呢???

2 个答案:

答案 0 :(得分:4)

您必须具有root权限才能创建原始套接字。这是一种特权行动;以sudo或root身份运行。

答案 1 :(得分:0)

尝试为您的应用程序设置CAP_NET_RAW和cap_net_admin功能。 详细信息可以在http://linux.die.net/man/7/capabilities

找到
 # setcap cap_net_raw,cap_net_admin=eip APPLICATION_PATH