Android DNS 代码都在bionic/libc/netbsd中
(虽然netbsd 是个废弃的项目,但dns功能部分代码被 Android用上了)
netbsd 代码晦涩难懂,只有一边写程序,一边打log验证
照抄了一个简单程序, 在android 下面用 mmm 编译可以得到 py_getaddr 可执行文件, 用adb 登陆到 devices 再到 system/bin 下去执行
payne@payne-desktop:~/njb/getaddr$ cat py_getaddr.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <string.h>
int main(int argc, char **argv)
{
if (argc != 2) {
fprintf(stderr, "Usage: %s hostname\n",
argv[0]);
exit(1);
}
struct addrinfo *answer, hint, *curr;
char ipstr[16];
bzero(&hint, sizeof(hint));
hint.ai_family = AF_INET;
hint.ai_socktype = SOCK_STREAM;
int ret = getaddrinfo(argv[1], NULL, &hint, &an