本帖最后由 Mculover666 于 2018-8-3 13:38 编辑
第一周的学习任务已经结束,主要是利用qemu和env学习rt-thread网络应用编程,学习群里的氛围很好,获得了不少的帮助,很感谢大家~现将这周学习过程中遇到的问题和学习所得分享出来~
1.开发环境搭建中遇到的问题1.1.网络共享问题 

* 问题分析:这是因为VMware生成的VMnet1和VMnet8所在的两个网段,其中一个网段刚好和微软共享的网段(就刚生成的那块网卡)相冲突;
* 解决方案:VMware Workstation Pro 编辑->虚拟网络编辑器 更改网段为其它;
1.2.RT-Thread获取不到ip
(*)问题描述:在qemu中启动rt-thread后,输入命令ifconfig查看ip,发现没有获取到ip

* 问题分析:这种问题一般发生在第一次启动时,tap网卡还没有分配到ip
* 解决方案:进入网络和internet设置->更改适配器选项中,先禁用tap网卡,然后重新启动,等待一小会,重新启动qemu即可;
2.示例学习中遇到的问题2.1.menuconfig问题
(*)问题描述:在menuconfig中未在samples 软件包中发现示例代码 tcpclient.c;

* 问题分析:由图中可以看出,samples软件包选项未选中,所以env不会下载该包到本地;
* 解决方案:空格键选中后save,然后exit,如果env开启了自动下载软件包,软件包就会下载到本地,如图:
2.2.tcp连接问题
(*)问题描述:如图,在8000端口开启TCPserver后,tcpclient连接失败;

* 问题分析:这是因为网络防火墙拦截了包,所以访问不到;
* 解决方案: 关闭网络防火墙;
3.homework--chatroom3.1.整体思路 
如图,整个任务要求是有限个状态而且顺序跳转,所以采用
状态机 的思想编写;
rt_uint8_t state = 0; //状态变量
.......
switch(state)
{
case 0:
/* 跳转到下一个状态 */
state = 1;
/* 初始状态下应该做的事 */
break;
. .....
default:
/* 防止状态机因为外界干扰或者程序错误而导致严重后果 */
/* 跳转到初始状态 */
state = 0;
/* 错误状态下应该做的事 */
break;
}
3.2.一个"\r\n"引发的问题* 问题描述:在第5问中,需要输出当前哪些人在聊天室,人数信息在第4问中获取,这个可以用一个指针+strcpy解决,但是这其中包含有“\r\n”,所以在发送的时候遇到第一个“\r\n”就发送完成,所以出现错误;
* 解决方案:在strcpy完字符串后,对字符串进行一遍遍历,将其中的"\r"和"\n"都替换为空格,发送前拼接时在最后加上"in the room\r\n",这样就可以发送成功了;
for(i=0;i{
if(current_all_id == '\n'||current_all_id == '\r')
current_all_id=' ';
}
3.3.完成结果 查看更多