上一篇讲了对NDK的初始化与一些基本的配置,这一次讲一下静态IP 配置。
IP地址最长是使用16个字节(包括数字与标点),如:192.168.100.100.
所以要先定义存储IP地址的数组:
char IPAddr[16];
除此之后,还有网关与子网掩码,也是最长16个字节(包括数字与标点),定义对应的缓存。
char IPMask[16];
char IPGateway[16];
这几个值都在通过串口进行的配置,具体的程序如下:
- char IPAddr[16];
- platform_write("\r\nInput IP address(Example 10.0.5.2)\n");
- platform_uart_read(PLATFORM_UART0, IPAddr);
- char IPMask[16];
- platform_write("\r\nInput subnet mask(Example 255.255.255.0)\n");
- platform_uart_read(PLATFORM_UART0, IPMask);
- char IPGateway[16];
- platform_write("\r\nInput default gateway(Example 10.0.5.1)\n");
- platform_uart_read(PLATFORM_UART0, IPGateway);
在此之前,有两个结构体要说一下,它们分别是CI_IPNET 与 CI_ROUTE 。
CI_IPNET结构体成员为:
其中
NetType
有三个值可以配置:
![](https://i-blog.csdnimg.cn/blog_migrate/9b4e3dfec768bc5c839f2007dbf4a2d4.png)
CI_ROUTE结构体为网关路由结构体,其成员有:
![](https://i-blog.csdnimg.cn/blog_migrate/e07bfbd4cab54a68c5d31ade9394b1f0.png)
首先先通过bzero函数,将两个结构体清零。
通过inet_addr函数,将之前定义的IPAddr、IPMask、赋值给CI_IPNET 结构体,通过strcpy 函数将DomainName赋值给CI_IPNET的最后一个成员Domain[CFG_DOMAIN_MAX]。
相对于CI_ROUTE结构体赋值也是类似的,最后将两个结构体赋值完成后,将这两个结构体添加到上一篇的HANDLE句柄中。
- CfgAddEntry(hCfg, CFGTAG_IPNET, 1, 0, sizeof(CI_IPNET), (UINT8 *)&NA, 0);
- CfgAddEntry(hCfg, CFGTAG_ROUTE, 0, 0, sizeof(CI_ROUTE), (UINT8 *)&RT, 0);
- CfgAddEntry(hCfg, CFGTAG_SYSINFO, CFGITEM_DHCP_DOMAINNAMESERVER, 0, sizeof(IPTmp), (UINT8 *)&IPTmp, 0);
还要配置 DNS 服务器,前面已经定义了DNS为:
char *DNSServer = "114.114.114.114";
- CfgAddEntry(hCfg, CFGTAG_SYSINFO, CFGITEM_DHCP_DOMAINNAMESERVER, 0, sizeof(IPTmp), (UINT8 *)&IPTmp, 0);
这样NDK的静态IP就配置好了。
由于这几篇都是NDK的讲解与使用方法的说明,在NDK的最后一篇将把所有的源码与二进制文件上传。