- 思路是首先客户端向服务器传输文件信息的序列化信息,像文件名,大小, MD5 校验码这些
- 然后等到服务器反序列化无误并发送确认信息后,客户端再发送文件内容
- 服务器收到文件内容,对数据校验比对,如果不对就发送信息重传
- 开始的时候是用 golang 写的,基本全是同步阻塞方式收发数据。写的过程中觉得这种效率不高,然后就想到了自己最近研究的 libevent
- 一个小小的 scp 命令扩展居然也涉及到了序列化,异步回调,多线程,以及自己在想办法使用 zero-copy 的技术。确实出乎自己的意料
- 对 libevent 的理解也更深了,之前的相互等待 BUG 调试让我印象很深。
- 发上来是希望有经验的网络开发者,以后可以交流一下。
- 地址:file-tcp