Android localSocket
来源:互联网 发布:浙江儿童dna数据库 编辑:程序博客网 时间:2024/06/05 02:11
转载地址:http://www.cnblogs.com/bastard/archive/2012/10/09/2717052.html
LocalSocket
在Unix域名空间创建一个套接字(非服务端)。
是对Linux中Socket进行了封装,采用JNI方式调用,实现进程间通信。
具体就是Native层Server和Framework层Client之间进行通信,或在各层次中能使用Client/Server模式实现通信。
LocalServerSocket
创建服务器端Unix域套接字,与LocalSocket对应。
LocalSocketImpl
Framework层Socket的实现,通过JNI调用系统socket API。
LocalSocketAddress
Unix域socket的地址以及所处的空间。
JNI访问接口:\frameworks\base\core\jni\android_net_LocalSocketImpl.cpp
socket_create
socket_connect_local
socket_bind_local
socket_listen
……
系统提供了LocalSocket作为客户端使用,同时提供了LocalServerSocket作为服务端使用。
Zygote服务使用了LocalServerSocket作为服务端socket通信。
建立socket通信,也可以在代码执行过程中进行,使用LocalSocket与LocalServerSocket。
在init.rc中为服务端建立的socket资源和初始化时绑定,与在代码中使用LocalServerSocket
建立的服务端socket资源在Linux域空间不同而已,过程是一样的跟一般的socket通信过程一致。
在Linux抽象空间 创建一个新的服务端socket:
public LocalServerSocket(String name) throws IOException{ //创建socket资源 impl = new LocalSocketImpl(); impl.create(true); //绑定地址 localAddress = new LocalSocketAddress(name); impl.bind(localAddress); //监听 impl.listen(LISTEN_BACKLOG);}
用文件描述符创建已经存在并且绑定的服务端socket:
如在init.rc中指定socket资源 dev/socket/……,zygote使用此方式创建作为服务端的socket
LocalServerSocket socket = new LocalServerSocket(createFileDescriptor(fileDesc));
public LocalServerSocket(FileDescriptor fd) throws IOException{ //已绑定 监听 impl = new LocalSocketImpl(fd); impl.listen(LISTEN_BACKLOG); localAddress = impl.getSockAddress();}通常使用过程中,客户端代码:
String message;//创建socketLocalSocket sender = new LocalSocket();//建立对应地址连接sender.connect(new LocalSocketAddress(SOCKET_ADDRESS));//发送写入数据sender.getOutputStream().write(message.getBytes());//关闭socketsender.getOutputStream().close();服务器端:
//创建socket并绑定监听 新创建的LocalServerSocket server = new LocalServerSocket(SOCKET_ADDRESS);while (true) { //等待建立连接 LocalSocket receiver = server.accept(); //接收获取数据流 InputStream input = receiver.getInputStream(); ……}
- android --- LocalSocket
- android localSocket
- Android localSocket
- Android LocalSocket
- Android LocalSocket
- Android中LocalSocket使用
- Android中LocalSocket使用
- Android中LocalSocket使用
- Android中LocalSocket使用
- Android中LocalSocket使用
- Android Localsocket的使用
- Android中LocalSocket使用
- Android中LocalSocket使用
- Android中LocalSocket使用
- Android中LocalSocket使用
- Android中LocalSocket使用
- Android中LocalSocket使用
- Android中LocalSocket使用
- Spring 常用标签
- 人脸识别《一》opencv人脸识别之收集人脸并学习
- C/C++ 做库文件和使用库
- Android View工作机制浅析(ppt)
- Linux下安装Tomcat服务器和部署Web应用
- Android localSocket
- git的学习
- Android研究之属性动画(Property Animation)完全解析详解下
- 解决arduino IDE闪退的问题(不用修改操作系统语言)
- 如何让服务重启
- GIS API (Javascript、IOS、Android版本)
- mysql日期加减
- poj2155(二维树状数组)
- 孫抃 (逸話)