在我的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");
}
我该如何解决呢???
答案 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