Sockets de dominio Unix entre host y emulador

Estoy tratando de hacer que Android y mi host Linux se comuniquen entre sí en los sockets de dominio de Unix.

Tengo mi servidor en el host mientras que el cliente es parte de una biblioteca que utilizará la pila de software del emulador. La pila de Android no puede encontrar el archivo de flujo de socket que especifiqué y que se encuentra en el sistema de archivos del host.

Ahora, antes de decir "reenviar puerto", lo intenté y esto es lo que intenté según mi comprensión del abd forwardcomando. No he tenido éxito en esto. ¿Podrían señalar el error y ayudarme?

adb forward localfilesystem:/tmp/android_socket localfilesystem:android_socket

La ruta utilizada en el host es /tmp/android_sockety en el emulador de Android es "android_socket"

pregunta de desarrollo?
No necesariamente. IPC (comunicación entre procesos) es útil en el desarrollo, claro, pero ciertamente también hay algunos "casos de uso civil". La pregunta no apunta directamente al desarrollo, por lo que diría que es válida aquí.
@Izzy ¡Eso es lo que pensé! :)
¡Dudo mucho que el emulador tenga la capacidad de hacer precisamente eso! La pila de Android no puede encontrar el archivo de flujo de socket que especifiqué y que se encuentra en el sistema de archivos del host. ¿Por qué no usar puertos TCPIP simples y anticuados en lugar de Dominio Unix? ¡Creo que eso está fuera del alcance del emulador!

Respuestas (1)

Los sockets de dominio Unix están destinados a ser utilizados para la comunicación entre procesos en un host, no para la comunicación entre hosts. Los sockets que se encuentran en el sistema de archivos como usted describe no son sockets de Unix, sino canalizaciones con nombre, y también están limitados para su uso en el mismo host.

Para la comunicación entre hosts, debe usar sockets de red de algún tipo.

¡+1 de mí, correcto, como he comentado anteriormente arriba! Lo has confirmado :)