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