JNI机制提供了名称为RegisterNatives()的JNI函数,该函数运行C/C++开发者将JNI本地函数与Java类的本地方法直接映射在一起。当不调用RegisterNatives()函数时,Java虚拟机会自动检索并将JNI本地函数与相应的Java本地方法链接在一起。但当开发者直接调用RegisterNatives()函数进行映射时,Java虚拟机就不必进行映射处理,这会极大提高运行速度,提高运行效率。
阅读全文
C/C++代码中调用Java代码的几种典型情况
需要在C/C++编写的本地应用程序中访问用Java语言编写的代码或代码库
希望在C/C++编写的本地应用程序中使用标准Java类库
当需要把已有的C/C++程序与Java程序组织链接在一起时,使用Invocation API,可以将它们组织成一个完整的程序
阅读全文
Serializable接口是Java中为对象提供标准的序列化和反序列化操作的接口,而Parcelable接口是Android提供的序列化方式的接口
阅读全文
在Java中,服务器程序的基本生命周期
使用一个ServerSocket()构造函数在一个特定端口创建一个新的ServerSocket。
ServerSocket使用其accept()方法监听这个端口的入站连接。accept()会一直阻塞,直到一个客户端尝试建立连接,此时accept()将返回一个连接客户端和服务器的Socket对象。
根据服务器的类型,会调用Socket的getInputStream()方法或getOutputStream()方法,或者这两个方法都调用,以获得与客户端通信的输入和输出流。
服务器和客户端根据已协商的协议交互,直到要关闭连接
服务器或客户端(或二者)关闭连接
服务器返回到步骤2,等待下一次连接
阅读全文
基本操作Socket是两台主机之间的一个连接。它可以完成7个基本操作
连接远程机器
发送数据
接收数据
关闭连接
绑定端口
监听入站数据
在绑定端口上接收来自远程机器的连接
Java的Socket类提供了对应前4个操作的方法,后三个仅服务器需要,即等待客户端的连接
阅读全文
基本步骤使用URLconnection类的程序遵循以下基本步骤
构造一个URL对象
调用这个URL对象的openConnection()获取一个对应URL的URLConnected对象
配置这个URLConnected
读取首部字段
获得输入流并读取数据
获得输出流并写入数据
关闭连接
阅读全文
创建InetAddress对象
getByAddress(byte[] addr) static InetAddress 根据提供的IP地址创建 InetAddress
getByAddress(String host, byte[] addr) static InetAddress 根据提供的主机名和IP地址创建 InetAddress
getByName(String host) static InetAddress 根据提供的主机名创建 InetAddress
getAllByName(String host) static InetAddress[] 在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。
getLocalHost() static InetAddress 返回本地主机
getLoopbackAddress() static InetAddress 返回回送地址,在Windows系统中,采用127.0.0.1
阅读全文