---服务器 收发消息+自定义包头处理 --- 客户端:
- 发送包头(文件名、文件大小)
- 等待客户端回ack包
- 发送文件主体
服务端:
- 接收包头
- 创建对应文件名,设定文件大小,根据大小进行mmap映射
- 发送ack包
- 接收文件主体
原生C++代码,未进行封装,学习过程中记录踩坑点, 服务端踩坑点:
- //【坑位1】*** *** accept的返回值,是client的socket_fd值,而不是0或-1 *** ***
- //【坑位2】*** *** recv的第一个fd参数,是client的socket_fd,而不是自身的socket_fd *** ***
- //【坑位3】*** *** server向client发送数据时候,send的fd要填client的fd *** ***
- //【坑位4】*** *** mmap的时候,打开方式一定要检查好,我这了踩坑排了好久,一定一定注意,bad address 有可能是 只读映射,没有写入权限 *** ***
客户端踩坑点: 0. //仔细检查open权限跟mmap的权限是否一致,不一致也回出现拒绝访问的错误
看的时候,只看对应文件夹里面的main即可,为了提高学习效率,没有做目录层级管理