LocalSocket Kommunikation mit Unix-Domain im Android-NDK
Habe ich Android-Anwendung, die Anforderungen zu etablieren, die unix-domain-socket-Verbindung mit
unsere C++ - Bibliothek (Android NDK)
public static String SOCKET_ADDRESS = "your.local.socket.address"; //STRING
Es ist LocalSocket in java, die akzeptiert "string" (Ihren.local.socket.Adresse)
#define ADDRESS "/tmp/unix.str" /* ABSOLUTE PATH */
struct sockaddr_un saun, fsaun;
if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
perror("server: socket");
exit(1);
}
saun.sun_family = AF_UNIX;
strcpy(saun.sun_path, ADDRESS);
Aber die unix-domain-socket, die auf native Ebene akzeptiert "absoluten Pfad". Wie also können diese zwei Parteien miteinander kommunizieren?
Bitte teilen Sie irgendein Beispiel, wenn möglich
- beachten Sie, dass auf android die temp freigegebene Ordner auf
/data/local/tmp
Du musst angemeldet sein, um einen Kommentar abzugeben.
LocalSocket verwendet den Linux-abstract-namespace anstelle des Dateisystems. In C werden diese Adressen angegeben sind, durch voranstellen von '\0', um den Pfad.
Beachten Sie auch, dass darf nicht passieren
sizeof(sockaddr_un)
zubind
odersendto
da alle bytes, die nach dem '\0' - Zeichen werden interpretiert als die abstrakte socket-Namen. Berechnen und übergeben Sie die real-Größe statt:Pro Android C++ mit dem NDK-Buch, Kapitel 10 hat mir geholfen, zu bekommen, begann mit der gleichen.