Android跨进程通信,rxjava面试题

StreamSocket:基于TCP协议的封装,以流的方式提供数据交互服务,提供了稳定的双向通信,通过“三次握手”建立连接,传输数据具有较高的稳定性。Java中客户端使用Socket类,服务器端使用ServerSocket类。DatagramSocket:基于UDP协议的封装,以数据报文的方式提供数据交互服务,提供了不稳定的单向通信,具有更好的执行效率,由于基于无连接的方式,传输数据不稳定,不保证数据的完整性。Java中使用DatagramPacket类,表示数据报包;DatagramSocket类.
摘要由CSDN通过智能技术生成
  • StreamSocket:基于TCP协议的封装,以流的方式提供数据交互服务,提供了稳定的双向通信,通过“三次握手”建立连接,传输数据具有较高的稳定性。
    Java中客户端使用Socket类,服务器端使用ServerSocket类。
  • DatagramSocket:基于UDP协议的封装,以数据报文的方式提供数据交互服务,提供了不稳定的单向通信,具有更好的执行效率,由于基于无连接的方式,传输数据不稳定,不保证数据的完整性。
    Java中使用DatagramPacket类,表示数据报包;DatagramSocket类,进行端到端通信。

Messager

底层也是通过封装AIDL来实现的,所以使用的方式和AIDL基本类似。

1.在服务端进程Service中创建Messenger对象,用来接收客户端发来的Message数据,和获取客户端Messenger对象,并给客户端发Message数据。
2.创建客户端Messenger对象,用来接收服务端数据。
3.客户端绑定服务端服务,并获取服务端Messenger对象,用来给服务端发Message数据。
4.通过服务端Messenger发消息,将客户端Messenger对象,添加到Message.replyTo。

public class MsgerService extends Service {
private Messenger mServerMessenger = new Messenger(new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);

// 接收客户端发过来的消息
switch (msg.what) {
case 1000:

Toast.makeText(getBaseContext(), “” + msg.arg1, Toast.LENGTH_SHORT).show();

Message cMsg = Message.obtain();
cMsg.what = msg.what;
Bundle bundle = new Bundle();
bundle.putString(“name”, “Jim”);
cMsg.obj = bundle;

// 获取客户端的Messenger对象,需要客户端在发送消息时设置
Mess

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值