在adb shell中运行,由NDK编译。
我的代码:
#include <sys/socket.h>
#include <errno.h>
#include <linux/netlink.h>
#include <linux/in.h>
#include <string.h>
#include <stdio.h>
int main()
{
int sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_ICMP);
printf("sock = %d and errno = %d\n", sock, errno);
return 0;
}
输出:
shell@android:/data/local/tmp $ ./poc
sock = -1 and errno = 13
有人知道为什么吗?
答案 0 :(得分:0)
请参阅here
看起来您需要添加: -
<uses-permission android:name="android.permission.INTERNET" />
https://developer.android.com/guide/topics/manifest/uses-permission-element.html
可能重复如果您的目标是Android 7.0,可能值得查看Using Socket() in Android NDK处的权限更改,但这取决于您的targetSdkVersion是否大于 23