Networking
摘要
枚举 |
|
---|---|
ResNsendFlags{
|
enum android_res_nsend 和 android_res_nquery 函数 flags 参数的可能值。 |
类型定义 |
|
---|---|
net_handle_t
|
typedefuint64_t
android.net.Network::getNetworkHandle() 返回值的对应 C 类型。 |
函数 |
|
---|---|
android_getaddrinfofornetwork(net_handle_t network, const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res)
|
int
通过与 |network| 关联的 DNS 服务器执行主机名解析。
|
android_getprocdns(net_handle_t *network)
|
int
获取当前进程的域名解析绑定到的 |network|。
|
android_getprocnetwork(net_handle_t *network)
|
int
获取当前进程绑定到的 |network|,与 android_setprocnetwork 设置的相同。
|
android_res_cancel(int nsend_fd)
|
void
尝试取消与 |nsend_fd| 描述符关联的进行中的查询。
|
android_res_nquery(net_handle_t network, const char *dname, int ns_class, int ns_type, uint32_t flags)
|
int
在给定 |network| 上查找与域名 |dname| 关联的 {|ns_class|, |ns_type|} 资源记录 (RR)。
|
android_res_nresult(int fd, int *rcode, uint8_t *answer, size_t anslen)
|
int
读取与 |fd| 描述符关联的查询结果。
|
android_res_nsend(net_handle_t network, const uint8_t *msg, size_t msglen, uint32_t flags)
|
int
在给定 |network| 上发出查询 |msg|。
|
android_setprocdns(net_handle_t network)
|
int
将此进程执行的域名解析绑定到 |network|。
|
android_setprocnetwork(net_handle_t network)
|
int
将当前进程绑定到 |network|。
|
android_setsocknetwork(net_handle_t network, int fd)
|
int
下面所有返回 int 的函数在成功时返回 0,失败时返回 -1 并设置相应的 errno 值。
|
android_tag_socket(int sockfd, uint32_t tag)
|
int
|
android_tag_socket_with_uid(int sockfd, uint32_t tag, uid_t uid)
|
int
|
android_untag_socket(int sockfd)
|
int
|
枚举
ResNsendFlags
声明于android/multinetwork.h
中
ResNsendFlags
android_res_nsend 和 android_res_nquery 函数 flags 参数的可能值。
值通过位或 (OR) 组合。
属性 | |
---|---|
ANDROID_RESOLV_NO_CACHE_LOOKUP |
不在缓存中查找请求。 |
ANDROID_RESOLV_NO_CACHE_STORE |
不在缓存中查找此请求,也不缓存查找结果。 |
ANDROID_RESOLV_NO_RETRY |
向单个解析器发送单个请求,并在超时或网络错误时失败。 |
类型定义
net_handle_t
声明于android/multinetwork.h
中
uint64_t net_handle_t
android.net.Network::getNetworkHandle() 返回值的对应 C 类型。
Java 签名 long 值可以安全地转换为 net_handle_t
[C] ((net_handle_t) java_long_network_handle) [C++] static_cast
根据需要进行。
函数
android_getaddrinfofornetwork
声明于android/multinetwork.h
中
int android_getaddrinfofornetwork( net_handle_t network, const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res )
通过与 |network| 关联的 DNS 服务器执行主机名解析。
所有参数(除了 |network|)的使用方式与传递给 getaddrinfo(3) 的参数完全相同。返回值和错误值与 getaddrinfo(3) 相同,特别是可以按预期使用 gai_strerror(3)。类似于 getaddrinfo(3)
- |hints| 可以为 NULL(在这种情况下,将应用手册页中记录的默认值)
- |node| 或 |service| 可以为 NULL,但不能两者都为 NULL
- |res| 必须不为 NULL
这等同于:android.net.Network::getAllByName()
自 API 级别 23 起可用。
android_getprocdns
声明于android/multinetwork.h
中
int android_getprocdns( net_handle_t *network )
获取当前进程的域名解析绑定到的 |network|。
成功时返回 0,如果传入 NULL 指针则返回 -1 并将 errno 设置为 EINVAL。
自 API 级别 31 起可用。
android_getprocnetwork
声明于android/multinetwork.h
中
int android_getprocnetwork( net_handle_t *network )
获取当前进程绑定到的 |network|,与 android_setprocnetwork 设置的相同。
这等同于:android.net.ConnectivityManager::getBoundNetworkForProcess() 成功时返回 0,如果传入 NULL 指针则返回 -1 并将 errno 设置为 EINVAL。
自 API 级别 31 起可用。
android_res_cancel
声明于android/multinetwork.h
中
void android_res_cancel( int nsend_fd )
尝试取消与 |nsend_fd| 描述符关联的进行中的查询。
自 API 级别 29 起可用。
android_res_nquery
声明于android/multinetwork.h
中
int android_res_nquery( net_handle_t network, const char *dname, int ns_class, int ns_type, uint32_t flags )
在给定 |network| 上查找与域名 |dname| 关联的 {|ns_class|, |ns_type|} 资源记录 (RR)。
|ns_class| 的典型值为 ns_c_in,而 |type| 可以是任何记录类型(例如 ns_t_aaaa 或 ns_t_txt)。|flags| 是用于控制实际查询行为的额外配置,详情请参阅 ResNsendFlags。
返回一个用于监视读取事件的文件描述符,如果发生立即错误则返回一个负的 POSIX 错误码(详情请参阅 errno.h)。
自 API 级别 29 起可用。
android_res_nresult
声明于android/multinetwork.h
中
int android_res_nresult( int fd, int *rcode, uint8_t *answer, size_t anslen )
读取与 |fd| 描述符关联的查询结果。
返回前关闭 |fd|。
自 29 起可用。
返回值:< 0:负的 POSIX 错误码(详情请参阅 errno.h 了解可能的值)。|rcode| 未设置。>= 0:|answer| 的长度。|rcode| 是解析器返回码(例如 ns_r_nxdomain)
android_res_nsend
声明于android/multinetwork.h
中
int android_res_nsend( net_handle_t network, const uint8_t *msg, size_t msglen, uint32_t flags )
在给定 |network| 上发出查询 |msg|。
|flags| 是用于控制实际查询行为的额外配置,详情请参阅 ResNsendFlags。
返回一个用于监视读取事件的文件描述符,如果发生立即错误则返回一个负的 POSIX 错误码(详情请参阅 errno.h)。
自 API 级别 29 起可用。
android_setprocdns
声明于android/multinetwork.h
中
int android_setprocdns( net_handle_t network )
将此进程执行的域名解析绑定到 |network|。
android_setprocnetwork 优先于此设置。
要清除之前的进程绑定,请使用 NETWORK_UNSPECIFIED 调用。成功时返回 0。失败时返回 -1,并设置 errno。
自 API 级别 31 起可用。
android_setprocnetwork
声明于android/multinetwork.h
中
int android_setprocnetwork( net_handle_t network )
将当前进程绑定到 |network|。
将来创建的所有套接字(以及未通过 android_setsocknetwork() 显式绑定的套接字)都将绑定到 |network|。所有主机名解析也将仅限于 |network|。请注意,如果 |network| 标识的网络断开连接,以这种方式创建的所有套接字将停止工作,并且所有主机名解析都将失败。这是有意为之的,以便应用程序不会意外使用它认为仍绑定到特定网络的套接字。
要清除之前的进程绑定,请使用 NETWORK_UNSPECIFIED 调用。
这等同于:android.net.ConnectivityManager::bindProcessToNetwork()
自 API 级别 23 起可用。
android_setsocknetwork
声明于android/multinetwork.h
中
int android_setsocknetwork( net_handle_t network, int fd )
下面所有返回 int 的函数在成功时返回 0,失败时返回 -1 并设置相应的 errno 值。
设置给定套接字文件描述符将使用的网络。
要清除之前的套接字绑定,请使用 NETWORK_UNSPECIFIED 调用。
这等同于:android.net.Network::bindSocket()
自 API 级别 23 起可用。
android_tag_socket
声明于android/multinetwork.h
中
int android_tag_socket( int sockfd, uint32_t tag )
android_tag_socket_with_uid
声明于android/multinetwork.h
中
int android_tag_socket_with_uid( int sockfd, uint32_t tag, uid_t uid )
android_untag_socket
声明于android/multinetwork.h
中
int android_untag_socket( int sockfd )