网络编程常见问题及解决方法

描述

1 基础知识

env 工具和 源码 所处的目录都不能有中文或空格请先检查!!

code 是一个命令 点 ‘.’ 是一个参数表示当前目录,中间有一个空格。

romfs ramfs 文件系统中的文件名和c的变量的命名一样,只能由英文字母开头且仅包含数字和下划线。

修改 qemu.bat 里面的参数时,要注意那是一行参数中间没有空格(复制粘贴完要注意)。其中ifname=tap 的意思就是虚拟TAP网卡的名字重命名为了 tap.

网络编程

终端显示 ?[m?[ 乱码

网络编程

图中的 ?[m?[ 是终端字体颜色的代码,显示出来是因为终端不支持颜色显示。

添加环境变量方法

首先请确认下面红框里的环境变量是否都有。

注意:修改完环境变量之后,要注销或重启电脑才能使环境变量生效

网络编程

添加环境变量方法

获取不到 IP 地址

获取不到 IP 地址的可能有很多,

一般启动 qemu 之后需要等个几秒才能获取到 IP 地址。

第一次开机可能获取不到 IP 地址,只要在 qemu 运行着的情况下,关闭网络共享,然后再开一次即可。

获取到的 IP 地址时 10.0.x.x 说明没有添加启动参数,请参照上面基础知识第 4 条添加启动参数。

如果运行 QEMU 时,tap 网卡的显示的不是未识别的状态 ,那可能是启动参数填错了,请参照上面基础知识第 4 条修改为正确的启动参数。

如果都设置对了,运行时 tap 网卡显示 未识别的状态,右键 tap 网卡点击 状态,如果是 无 Internet 连接 ,请进行网络诊断试试。

有 VMvare 网卡的可以先禁用 再试一次。

menuconfig 找不到要配置的项

应该是 env 的软件包索引需要更新了,或者需要先按空格开启这一项功能,然后再按回车进入配置项。

网络编程

menuconfig 找不到要配置的项

解决方法:在 env 输入命令 pkgs --upgrade 更新 env 的运行脚本和软件包索引。 具体方法参见:env 使用手册

2 环境搭建

scons 编译结果很短

网络编程

scons 编译结果很短

解决方法:这不是问题,编译器只编译被改变过的文件,没有改变的不会重复编译,而且,显示已经编译完成了。另外,图中的 ?[m?[ 是终端字体颜色的代码,显示出来是因为终端不支持颜色显示。

pkgs --update 更新失败

网络编程

pkgs --update 更新失败

原因

没有安装Git,也可能是没有添加环境变量

解决方法

安装Git,添加环境变量,并需要注销或者重启系统添加环境变量方法

创建网桥失败

网络编程

创建网桥失败

原因,共享和网桥只能使用一种方式,不要同时使用。

网络共享失败

网络编程

网络共享失败

原因:

上面出现网络共享失败的原因已经找到,是因为PC机安装了360,360默认将防火墙服务关闭了,需要手动开启防火墙功能

解决方法:

具体解决办法,参考了 https://jingyan.baidu.com/article/d5c4b52bcb9f04da560dc59d.html

Tap 网卡显示未识别的网络

网络编程

Tap 网卡显示未识别的网络

解决方法:这是==正常==的状态,获取不到ip 只要在qemu运行的情况(即tap网卡显示未识别的网络)下关闭网络共享,再重新打开即可。

Scons 不能用

网络编程

Scons 不能用

解决方法:更新源码到最新 或 按视频操作下载最新的源码。

运行有 SDIO 红色错误

网络编程

运行有 SDIO 红色错误

解决方法:这个不用管,没影响。

ping 命令找不到

网络编程

ping 命令找不到

原因:

打开了 RT-Thread online packages  ---> 里面的某些功能,但是由于一些原因却没有成功更新到本地上造成的。所以有以下几种情况

没有在 online packages 里开启 ping 的功能

没有更新软件包

网络不好更新失败

更新成功了却没有 scons 重新编译

解决方法:

更新软件包的方法:

手动更新软件包 输入命令 pkgs --update

开启自动更新软件包功能

网络不好更新失败的:去官网下载最新版 env,然后在 env 的配置 menuconfig -s 里面开启镜像源下载 pkgs download using mirror server

3 Vscode 调试

输入 code 命令出错

网络编程

输入 code 命令出错

注意:code 是命令 ‘.’ 是参数,中间有空格

解决方法:添加 vscode 所在路径的环境变量,添加环境变量,并需要注销或者重启系统

找不到 qemu debug

网络编程

找不到 qemu debug

解决方法:请看下图中的操作步骤

网络编程

调试工程注意事项

出现 cppdbg 错误

网络编程

出现 cppdbg 错误

解决方法:请按教程文档上描述安装上 c/c++ 插件

没有 Debug@windows 选项

网络编程

没有 Debug@windows 选项

解决方法:按视频操作下载最新的源码。

出现一长串数字

网络编程

调试出现一长串数字

原因:

没有在文件 qemu-dbg.bat 的参数前加 start 或者 没关闭之前运行的 qemu,要先关闭之前运行的 qemu,才能开始调试。

解决方法:

按教程中操作,在文件 qemu-dbg.bat 的参数前加 start 或着先关闭之前运行的 qemu,再按 F5。

按 F5 键 不管用

笔记本电脑的 F5 一般和功能键复用了,如果按下 F5 是调节屏幕亮度或其他功能,可以尝试按 Fn + F5。

4 文件系统

romfs 编译报错

原因:romfs ramfs 文件系统中的文件名和c的变量的命名一样,只能由英文字母开头且仅包含数字和下划线,不能有中横线。

ramfs 运行出现断言错误

网络编程

ramfs 运行出现断言错误

解决方法:这是一个已经解决的 bug ,需要更新源码,拉取最新源码的方法见第一节环境搭建的视频。

中文名称文件显示乱码

网络编程

中文名称文件显示乱码

原因:显示的编码不同,VScode 是 UTF8, env 是 gb2312,好像是。

在 env 中找不到示例代码

网络编程

在 env 中找不到示例代码

解决方法:env 该更新了,输入命令 pkgs --upgrade 升级 env,然后请仔细看一遍 env 手册(链接地址在本文档头部)。

ls 出现 No such directory

解决方法:这是文件系统初始化失败了,查看文件系统初始化的代码,检查问题。

5 网络抓包

检测不到网卡的话,请自行百度。

6 socket 编程

注意:socket 不支持多线程操作

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分