Unix-Domain-Sockets zwischen Host und Emulator

Ich versuche, Android und meinen Linux-Host auf Unix-Domain-Sockets miteinander sprechen zu lassen.

Ich habe meinen Server auf dem Host, während der Client Teil einer Bibliothek ist, die der Software-Stack des Emulators verwendet. Der Android-Stack kann die von mir angegebene Socket-Stream-Datei nicht finden, die sich zufällig im Dateisystem des Hosts befindet.

Nun, bevor Sie "port forward" sagen, habe ich das versucht, und das habe ich versucht, basierend auf meinem Verständnis des abd forwardBefehls. Damit hatte ich keinen Erfolg. Könnt ihr bitte auf den Fehler hinweisen und mir helfen?

adb forward localfilesystem:/tmp/android_socket localfilesystem:android_socket

Der im Host verwendete Pfad ist /tmp/android_socketund der im Android-Emulator ist "android_socket".

Entwicklungsfrage?
Nicht unbedingt. IPC (Inter-Process Communication) ist in der Entwicklung sicherlich nützlich - aber es gibt sicherlich auch einige "zivile Anwendungsfälle". Die Frage zielt nicht direkt auf die Entwicklung ab, daher würde ich sagen, dass sie hier gültig ist.
@Izzy Das dachte ich mir!! :)
Ich bezweifle stark, dass der Emulator dazu in der Lage ist! Der Android-Stack kann die von mir angegebene Socket-Stream-Datei nicht finden, die sich zufällig im Dateisystem des Hosts befindet. Warum nicht einfach altmodische TCPIP-Ports anstelle von Unix-Domänen verwenden ... denke, das liegt außerhalb des Bereichs des Emulators!

Antworten (1)

Unix-Domain-Sockets sind für die Kommunikation zwischen Prozessen auf einem Host gedacht, nicht für die Kommunikation zwischen Hosts. Sockets, die sich wie von Ihnen beschrieben im Dateisystem befinden, sind keine Unix-Sockets, sondern Named Pipes und sind ebenfalls auf die Verwendung auf demselben Host beschränkt.

Für die Kommunikation zwischen Hosts müssen Sie irgendeine Art von Netzwerk-Sockets verwenden.

+1 von mir, richtig, wie ich bereits oben kommentiert habe! Du hast es bestätigt :)