这是我创建 RAW 套接字的代码:
int s = socket (PF_INET,SOCK_RAW, IPPROTO_TCP);
if (setsockopt (s, IPPROTO_IP, IP_HDRINCL, val, sizeof (one)) == -1)
{
int errorNumero = errno;
std::string name = "Número de error: ";
std::string result;
std::string descripcionError = strerror(errno);
result = descripcionError + std::to_string(errorNumero);
return env->NewStringUTF(result.c_str());
return env->NewStringUTF(result.c_str());
}
在另一种情况下,在我的 Manifest.xml 上,我具有以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.NET_ADMIN" tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.NET_RAW" tools:ignore="ProtectedPermissions"/>
我正在摩托罗拉 One Hyper(Android 10)上运行此代码。它是植根的,在我调用函数来执行我使用的套接字之前:
Process p;
try {
p = Runtime.getRuntime().exec("su");
} catch (IOException e) {
e.printStackTrace();
}
获得超级用户权限。
当应用程序启动时,我收到消息“错误的文件描述符 #9”。