1

这是我创建 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”。

4

0 回答 0