2012-06-09 69 views
0

我已经实现了一个带有活动和远程服务的android程序。该活动使用AIDL与服务进行通信和交互,但在同一台机器上,并且知道他们使用IPC机制相互通信。现在,我想把它们放在不同的机器上并在它们之间建立连接。我试图使用套接字来建立连接,但我不知道如何做到这一点。如何启动/停止并绑定在不同计算机上运行的服务?插座是这种情况下的最佳选择,还是有其他更好的解决方案?我是否需要更改Android操作系统上的Binder类来处理这个问题?如果你能帮我找到解决方案,我将不胜感激。活动和远程服务在不同机器上的连接

感谢, 镭

回答

2

我怎么能启动/停止和绑定的服务,这是不同的机器上运行的活动?

你不知道。

插座是这种情况下的最佳选择还是有其他更好的解决方案?

由于NAT限制等原因,直接的设备到设备通信通常不可能通过Internet进行,除非它们都在同一个WiFi路由段上。这与直接的PC到PC通信的问题没有什么不同,但是您通常无法控制防火墙所涉及的额外挑战。大多数解决方案都涉及在中间使用服务器,充当经纪人或代理人。

我是否需要更改Android OS上的Binder类来处理这个问题?

您不需要使用BinderBinder是IPC(进程间通信),而不是RPC(远程过程调用)。

+0

Thanks.in http://developer.android.com/reference/android/os/Binder.html提到我可以“从Binder派生并实现我自己的自定义RPC协议”。 –

+0

我还检查了Android操作系统源代码中的http://developer.android.com/reference/android/os/IBinder.html和binder类,看看是否可以在ontransaction()方法中打开套接字并发送序列化的obj它或不(在android操作系统修改ontransact(),编译操作系统,在客户端和服务器上使用修改后的操作系统)。但在此之前,我需要先绑定服务,不知道是否可以打开当它试图通过更改android操作系统源代码或不是因为它在这种情况下使用ontransact()来调用android操作系统中的bindservice套接字。 –

相关问题