問題
Android 中有 LocalScoket
和 Socket
,兩者 API 看起來都很像,那麼他們有什麼差別呢?
解答
Socket 最初用於 TCP/IP 網絡通信。在 TCP/IP 協議棧中,由於操作系統隱藏了 TCP/IP 協議,應用程序如果要調用協議,就需要操作系統提供的 Socket 接口。
後來在 Socket 基礎上發展出一種 IPC(進程間通信) 機制 Unix domain socket,用於同一臺主機之間的進程通信。
雖然 Socket 也可以實現同一臺主機的跨進程通信,但是 Unix domain socket 避開的不必要的網絡協議棧,因此效率高。
Android 的 LocalScoket 其實是封裝了 Unix domain scoket。
所以,LocalSocket 用於 IPC,Socket 用於網絡通信。