网络通信之Socket与LocalSocket的比较
Socket与LocalSocket都可以实现网络通信,两个有什么区别呢?
LocalSocket其通信方式与Socket差不多,只是LocalSocket没有跨越网络边界。
于是,思考到一个问题:android应用与PC端的服务器应用进行通信时,能否用Socket、LocalSocke来实现?
1.Socket肯定是能实现的。
2.LocalSocket能实现吗?
估计是不能,与PC端通信连接时,需要创建套接字实例,要传入参数主机名和端口号,而LocalSocket和LocalServerSocket都没有对应的api方法。
可以参考下两个例子:
http://www.cnblogs.com/Joanna-Yan/p/4708400.html
http://www.cnblogs.com/Joanna-Yan/p/4708293.html
一、Java Socket
socket最初用在基于TCP/IP网络间进程通信中,以C/S模式进行通信。实现异步操作,共享资源集中处理,提高客户端的响应能力。
TCP通信基本流程:
Server Client
1.创建socket 1.创建socket
2.bind()
3.listen()
4.accpet()
-------等待客户端连接-------- 2.connect()
5.读数据(receive) 3.写数据(send)
6.写数据(send) 4.读数据(receive)
7.关闭socket 5.关闭socket
数据流:
二、Android LocalSocket
LocalSocket
在Unix域名空间创建一个套接字(非服务端)。是对Linux中Socket进行了封装,采用JNI方式调用,实现进程间通信。
LocalServerSocket
创建服务端Unix域套接字,与LocalSocket对应。
客户端:
LocalSocket客户端使用,创建套接字
LocalSocketAddress 套接字地址,其实就是文件描述符(主要是服务器的地址,当然也可以客户端自个绑定地址)
setSoTimeout设置超时
connect客户端主动向服务端请求连接
服务端:
LocalServerSocket服务端使用,创建套接字同时指定文件描述符
accept等待客户端连接(阻塞)
共同:
getInputStream获取套接字输入流
getOutputStream获取套接字输出流
close关闭套接字,客户服务都需要
网络通信之Socket与LocalSocket的比较的更多相关文章
- Android 网络通信之Socket
Android 网络通信之Socket 应用软件的网络通信无非就是Socket和HTTP,其中Socket又可以用TCP和UDP,HTTP的话就衍生出很多方式,基础的HTTP GET和POST请求,然 ...
- 网络通信 & 初识socket
本节主要内容: 1.客户短\服务端架构 2.网络通信的流程 3.初识socket 一.客户端\服务端架构 客户端\服务端架构: 即Client/Server (C/S) 结构,是大家熟知的软件系统体系 ...
- Android网络通信之Socket
在移动APP开发中.网络通信数据传输是必定存在的.移动APP离开了网络通信数据传输的功能方式,就好比一潭死水,永远都 是原来的样子. 提到网络通信传输数据.首先出如今程序猿脑海中的是HTTP协议传输, ...
- python中的网络通信,socket、select、selectors、socketserver
楔子 网络通信用于获取一个算法在本地运行所需的数据,还可以共享信息实现分布式处理,另外可以用来管理云服务. python的标准库提供了一些模块来创建网络服务以及访问现有服务ipaddress模块提供了 ...
- Java——Socket编程(一)
1. 网络基础知识 两台机器之间需要进行通信,需要满足的条件: 每个机器有一个唯一的标识符(IP地址): 他们之间进行通信需要用同一种语言(协议): 每台主机上面有多个应用程序,如QQ,微博,迅雷等, ...
- 读书笔记3 Socket
Socket被称为网络插座.用于两个网络应用程序之间的通信. 通信地址:URI 通过协议,地址,端口号可以确定网络上的一个程序.地址和端口号组合称之为端点. 通常会有发信人通信地址,收信人通信地址这两 ...
- Socket的应用案例
java提供网络功能的四大类1.InetAddress :用于标识网络上的硬件资源.2.URL:统一资源定位符,通过URL可以直接读取和写入网络上的数据.3.Socket:使用TCP协议实现网络通信的 ...
- Android中java层使用LocalSocket和底层进行通讯
原始文件:frameworks\base\services\java\com\android\server\NativeDaemonConnector.java private void listen ...
- Android中的socket本地通讯框架
一.先分析Native层: 1.C++基类SocketListener: class SocketListener { int mSock; const char *mSocketNa ...
随机推荐
- maven 简介
本书代码下载 大家可以从我的网站下载本书的代码:http://www.juvenxu.com/mvn-in-action/,也可以通过我的网站与我取得联系,欢迎大家与我交流任何关于本书的问题和关于Ma ...
- 【ios面试总结】
一 C语言方法的知识 1: const static voilite 修辞变量各代表什么意思? const 修辞的变量为常量,常量是不容许修改. static 修辞的变量为静态变量,在内存中 ...
- C++混合编程之idlcpp教程Python篇(8)
上一篇在这 C++混合编程之idlcpp教程Python篇(7) 第一篇在这 C++混合编程之idlcpp教程(一) 与前面的工程相似,工程PythonTutorial6中,同样加入了四个文件:Pyt ...
- vs的dll引用机制
vs2012编译的时候,遇到一个问题就是项目A中运行时缺失dll的问题,项目A引用类库B,类库B引用了x,y等dll,编译A项目的时候,出现x没拷贝到bin 目录. 通过跟踪编译输出发现,x没拷贝的原 ...
- xtrabackup_binlog_pos_innodb 和 xtrabackup_binlog_info
用过 xtrabackup 工具的 innobackupex 脚本备份数据的人可能会注意到,–apply-log 处理过的备份数据里有两个文件说明该备份数据对应的 binlog 的文件名和位置.但有时 ...
- FtpDataStream中的隐藏问题
最近在使用FtpWebResponse.GetResponseStream方法时遇上个问题——Stream在未关闭之前就报出了ObjectDisposedException.刚开始十分困惑,因为一直用 ...
- js下的面向对象
本文记录了一种Javascript的面向对象方法及原理理解,示例代码如下: //构造函数 var MClass = function(value1, value2) { this.member = & ...
- Controller的生命周期是Transient还是PerWebRequest?
当我们用在MVC总使用IoC时,大家的Controller生命周期(lifestyle)是以哪种方式注册的呢? 之前我一直没有思考过这个问题.众所周知在MVC开发过程中,大部分的组件都是以PerWeb ...
- Python黑客编程基础3网络数据监听和过滤
网络数据监听和过滤 课程的实验环境如下: • 操作系统:kali Linux 2.0 • 编程工具:Wing IDE • Python版本:2.7.9 • 涉及 ...
- TypeScript - Classes
简介 JavaScript语言基于函数和原型链继承机制的方式构建可重用的组件.这对于OO方面编程来说显得比较笨拙.在下一代的JavaScript标准ECMAScript 6为我们提供了基于class ...