2012-06-09 104 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套接字。 –

相關問題