Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Android local sockets in native code

3,779 views

Published on

Using local sockets in Android native code.

Published in: Software

Android local sockets in native code

  1. 1. Android Local Sockets In Native Code T.V.R.Prasad
  2. 2. Contents ● Types of Sockets ● ANDROID_SOCKET_NAMESPACE_ABSTRACT ● ANDROID_SOCKET_NAMESPACE_RESERVED ● ANDROID_SOCKET_NAMESPACE_FILESYSTEM
  3. 3. Types Of Sockets ● ANDROID_SOCKET_NAMESPACE_ABSTRACT A socket in the Linux abstract namespace. ● ANDROID_SOCKET_NAMESPACE_RESERVED A socket in the Android reserved namespace in  /dev/socket.   ● ANDROID_SOCKET_NAMESPACE_FILESYSTEM A socket named with a normal filesystem path.  ● The code indicates the presence of filesystem  entries for  the RESERVED and FILESYSTEM type of  sockets. 
  4. 4. ANDROID_SOCKET_NAMESPACE_ABSTRACT        /* Server Example */ int serverFd; /* File descriptor of Server Socket */ int clientFd;  /* File descriptor of Client Socket */ int clen; /* Size of the peer address */ serverFd = socket_local_server("android:debuggerd",     ANDROID_SOCKET_NAMESPACE_ABSTRACT, SOCK_STREAM);     if(serverFd < 0) return ­1;  struct sockaddr addr;  socklen_t alen = sizeof(addr); /* Wait for connection request from client */     clientFd = accept(s, &addr, &alen); /* Read and write data from client socket */ readLen = read(clientFd, data, dataLen); writeLen = write(clientFd, status, sizeof(status));
  5. 5. ANDROID_SOCKET_NAMESPACE_ABSTRACT                   /* Client Example */ int socketFd; /* File descriptor of Server Socket */ socketFd = socket_local_client("android:debuggerd",     ANDROID_SOCKET_NAMESPACE_ABSTRACT, SOCK_STREAM);    if(socketFd >= 0) { /* Read and write data to the server */ readLen = read(socketFd, data, dataLen); writeLen = write(socketFd, status, sizeof(status)); } /*  Close the server socket once done */ close(socketFd);
  6. 6. ANDROID_SOCKET_NAMESPACE_RESERVED      /* Server Example */ int serverFd; /* File descriptor of Server Socket */ int clientFd;  /* File descriptor of Client Socket */ int clen; /* Size of the peer address */ serverFd = socket_local_server("gps",  ANDROID_SOCKET_NAMESPACE_RESERVED, SOCK_SEQPACKET); /* Wait for connection request from client */ clientFd = accept(serverFd, 0, &clen);  /* Read data from client socket */ readLen = read(clientFd, data, dataLen); /* Write data to client socket */ writeLen = write(clientFd, status, sizeof(status));
  7. 7. ANDROID_SOCKET_NAMESPACE_RESERVED /* Client Example */ int socketFd; /* File descriptor of Socket */ /*Create a client socket and connect to the address  with the name gps in the reserved socket namespace */ socketFd = socket_local_client("gps",  ANDROID_SOCKET_NAMESPACE_RESERVED, SOCK_SEQPACKET); /* socketFd less than 0 indicates failure to connect to  the server,return Error; */ if(socketFd < 0) { return Error; }  /* Read and write data to the server */ readLen = read(socketFd, data, dataLen); writeLen = write(socketFd, status, sizeof(status));
  8. 8. ANDROID_SOCKET_NAMESPACE_FILESYSTEM        /* Server Example */ /* File descriptor of Server Socket and Client sockets*/ int serverFd,clientFd;  int connect(const char *name) { serverFd = socket_local_server(name,  ANDROID_SOCKET_NAMESPACE_FILESYSTEM, SOCK_STREAM); return serverFd; } /* Wait for connection request from client and after  accepting the connection read and write data from  client socket */ readLen = read(clientFd, data, dataLen);
  9. 9. ANDROID_SOCKET_NAMESPACE_FILESYSTEM                   /* Client Example */ int socketFd; /* File descriptor of Server Socket */ int connect(const char *name) { socketFd = socket_local_client(name,  ANDROID_SOCKET_NAMESPACE_FILESYSTEM, SOCK_STREAM); return socketFd; } if(socketFd >= 0) { /* Read and write data to the server */ readLen = read(socketFd, data, dataLen); /*  Close the server socket once done */ close(socketFd);
  10. 10. Thank You

×