java - java.net 包如何工作?

标签 java android linux

Android 开发人员 documentation描述应用程序用于联网的 java.net 包。现在 Android 有一个 Linux 内核,所以最终包发出的任何 HTTP 请求都必须转换成一些系统调用。

我想问的是这个库是否也附带了一些JNI层代码,是否依赖libc库与内核交互?

最佳答案

在 Oracle JVM 中,net.dll 被加载到存在于 jre/bin 中的 AbstractPlainSocketImpl 中。

/**
 * Load net library into runtime.
 */
static {
    java.security.AccessController.doPrivileged(
        new java.security.PrivilegedAction<Void>() {
            public Void run() {
                System.loadLibrary("net");
                return null;
            }
        });
}

Android 的 Dalvik 也以同样的方式工作。查看以下链接:

https://github.com/android/platform_system_core/tree/master/libcutils
https://github.com/android/platform_system_core/blob/master/libcutils/socket_network_client.c

关于java - java.net 包如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33991570/

相关文章:

linux - 函数内部的错误处理,以便我们可以退出脚本

c++ - 线程 0x7fffc57fa700 (LWP 31671) exited] 在 gdb 中是什么意思?

java - Selenium Webdriver Java : Checking if a piece of script is present

android - 如何启用 Genymotion 模拟器以使用主机正在使用的 WIFI 互联网

android - Nearby Connections 的性能如何?

android - 该 Realm 实例已被关闭,使其无法使用 + RxJava

linux - Haskell make recipe 使用 GHC 的悖论定理证明器失败

java - 正则表达式 - 匹配模式但返回子模式

java - 实现事件驱动的轻量级线程

java - Lombok 承认 setter/getter ,但编译失败