一、课程信息
打卡时间:2022.8.9
课程名称:C/C++气象数据中心实战,手把手教你做工业级项目
章节名称:开发基于tcp协议的文件传输子系统
讲师: 长歌_吴从周
二、今日课程
课程内容:(1)之前写的代码存在bug (2)异步通信的三种方式
三、学习心得
3.1 之前写的代码存在bug
在调试TCP文件传输系统-删除和转存本地文件任务时,出现了本地某些文件删除失败的情况。从客户端的logfile可以看到文件被删除了多次但是依然失败,查看权限发现,删除失败的文件和其他删除成功的文件拥有相同的权限。bug出现的原因还有待查询。而且昨天写的Updatestr_string函数也出现了bug,待查找中…
3.2 异步通信和同步通信
同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。
异步:异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。
简单来说,客户端发出请求等待服务端回应,在请求发出到得到回应之前,客户端不做任何事情,因此同步效率比较低。
异步通信,客户端在发送请求的同时允许接收到服务端的信息,使用异步通信的好处是文件传输效率得到了极大的提升。但是也存在缺点,首先是程序逻辑变得更加复杂,除此之外,假如客户端向服务端发送1000个请求,但是客户端因为意外情况断开连接,但是客户端只收到服务端500个回应,客户端不知道服务端处理情况。
异步通信常用方法:
1.多进程:用不同的进程发送报文和接收报文
2.多线程:用不同的线程发送报文和接收报文
3.I/O复用的方式:select、poll、epoll函数