H616静态IP设置失败
-
系统是Android10,大致情况如下:
- 接入网线后,使用ifconfig命令查看eth0,确定网线已正确连接;
- 打开设置,进入网络设置界面,设置正确的静态IP,使用ifconfig命令,确定eth0的IP改变;
- 插拔盒子电源,重启盒子,这时候IP就不是重启前设置的静态IP了
-
可能是还没写入文件就已经断电了,导致的数据丢失
linux内核写入文件的特性:先将内容写入缓存,在io空闲或者一段时间等情况下,再将内容写入磁盘,
当内容在缓存中时,可以通过 cat 命令查看内容,因此通过 cat 命令能查看到 IP 不能说明已经将内容写入
在设置完静态IP之后,调用相关方法,马上将内容写入磁盘。
代码路径:
frameworks/base / services/core/java/com/android/server/net/IpConfigStore.java
public void writeIpConfigurations(String filePath, ArrayMap<String, IpConfiguration> networks) { mWriter.write(filePath, out -> { out.writeInt(IPCONFIG_FILE_VERSION); for(int i = 0; i < networks.size(); i++) { writeConfig(out, networks.keyAt(i), networks.valueAt(i)); } + try { + sync(filePath); + } catch (IOException e) { + loge("Ipconfig sync error:" + e.toString()); + } }); } + public void sync(String filepath) throws IOException { + File f = new File(filepath); + RandomAccessFile raf = null; + + try { + raf = new RandomAccessFile(f, "r"); + FileDescriptor fd = raf.getFD(); + fd.sync(); + + } finally { + if (raf != null) { + raf.close(); + } + } + }
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号