项目开发日报表——第八天
项目名称 | 【苏嵌实训-嵌入式 linuxC 第 8 天】 |
---|---|
今日进度以及任务 | 嵌入式Linux C 多任务编程线程的资源保护机制(互斥锁、线程信号量、条件变量)、网络基础、网络编程 |
本日任务完成情况 (详细说明本日任务是否按计划完成,开发的代码量) | 编写代码实现线程的互斥锁,编写代码创建服务器和客户端并实现服务器和客户端之间通信。 |
本日开发中出现的问题汇总 | 1.TCP和UDP; 2. 为什么是三次握手和四次挥手? 3.出现无法绑定套接字的报错? |
问题解答 | 1.答: TCP是面向连接的,可靠,速度慢;UDP工作效率高,不可靠。 2.答: 网络通信是全双工的。 3.答: client终止时自动关闭socket描述符,server的TCP连接收到client发的FIN段后处于TIME_WAIT状态。TCP协议规定,主动关闭连接的一方要处于TIME_WAIT状态,等待两个MSL的时间后才能回到CLOSE状态,但因为我们先终止了server,所以server是主动关闭连接的一方,在TIME_WAIT期间仍然不能再次监听同样的server端口。(MSL在RFC1122中规定为两分钟) 解决办法: 在server代码的socket()和bind()之间调用setsockopt函数,让端口号可以重复使用。 |
本日开发收获 | 学会了线程的互斥锁的使用,巩固了网络基础知识,掌握了服务器和客户端的编程方法并加以实现。 |