您好,
我正在 TIRTOS 环境中使用 Tiva、TM4C1294NCPDT MCU 进行项目、并将 NDK 模块用于 TCP 客户端应用。 我的应用程序使用静态 IP 连接、我将此地址输入到.cfg 文件中。 TCP-echo 应用程序可以与在.cfg 文件上输入的任何 IP 地址配合使用。
但我想更改要在运行时输入的 IP。 我已经完成了以下操作、这些操作已发布在您的一个门户上、并已尝试、但未与新 IP 连接。 。
- 对于'readIPAddr()',使用 NDK 挂钩“网络打开挂钩”而不是“堆栈开始挂钩”
- 查找并删除最初添加的静态 IP 地址(从接口取消绑定)
- 添加新 IP 地址(绑定新 IP 地址)
这是我用于执行此操作的更新代码(涵盖上面的步骤2 + 3)。 您可以将其更改为读取和使用 ROM 中的 IP 地址:
CI_IPNet NA;
句柄 hCfgIpAddr;
/*设置手册 IP 地址*/
bzero (不适用、sizeof (不适用));
na.ipaddr = inet_addr ("172.16.10.2");
na.ipMask = inet_addr ("255.255.255.0);
strcpy (na.Domain、"demo.net");
NA.NetType = 0;
/*获取当前静态 IP 条目*/
CfgGetEntry (0、CFGTAG _IPNet、1、1、&hCfgIpAddr);
/*删除当前静态 IP 条目*/
CfgRemoveEntry (0、hCfgIpAddr);
/*添加新的静态 IP 条目*/
CfgAddEntry (0、CFGTAG _IPNet、1、0、
sizeof (CI_IPNet)、(uint8 *)&nA、0);
我在 netOpenHook 函数(TCP-eco 示例代码)上添加了上述例程、该函数已是网络开放式挂钩函数。
在控制台上显示以下内容,其中172.16.10.1是.cfg IP 地址,172.16.10.2是新 IP。
网络已添加:if-1:172.16.10.1
网络已删除:if-1:172.16.10.1
网络已添加:if-1:172.16.10.2
奇怪的是、这个新 IP 在 cmd 提示符下获得 ping 命令、但当连接到超级终端时、它未连接。 ACCEPT 函数不返回连接。 为什么会这样? 当上述 routin 是 netOpenHook 函数的注释形式时,它连接到.cfg IP 地址(即172.16.10.1)
