Android dhcp管理,android ethernet DHCP小记(接上篇)

本文详细探讨了Android系统中DHCP管理的过程,从java层的触发到C++层的实现,包括`dhcp_do_request`函数的调用,以及在`libnetutils`库中的`do_dhcp`和`dhcp_init_ifc`等关键步骤。文章还提到了DHCP协议的五种主要消息类型,为理解Android设备如何获取和设置IP地址提供了深入见解。
摘要由CSDN通过智能技术生成

在上一篇中有提到是java层EthernetStateTaracker接受到消息EVENT_DHCP_START,会调用NetworkUtils.runDhcp(mInterfaceName, mDhcpInfo),这个接口在android_net_NetUtils.cpp中有实现,通过jni调用。

static jboolean android_net_utils_runDhcp(JNIEnv* env, jobject clazz, jstring ifname, jobject info)

{

int result;

in_addr_t ipaddr, gateway, mask, dns1, dns2, server;

uint32_t lease;

const char *nameStr = env->GetStringUTFChars(ifname, NULL);

result = ::dhcp_do_request(nameStr, &ipaddr, &gateway, &mask,

&dns1, &dns2, &server, &lease); //在system/core/libnetutils/dhcp_utils.c中实现

env->ReleaseStringUTFChars(ifname, nameStr);

if (result == 0 && dhcpInfoFieldIds.dhcpInfoClass != NULL) {

env->SetIntField(info, dhcpInfoFieldIds.ipaddress, ipaddr);

env->SetIntField(info, dhcpInfoFieldIds.gateway, gateway);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值