Skip to content

---服务器 收发消息+自定义包头处理 --- \n原生C++代码,未进行封装,学习过程中记录踩坑点,服

Notifications You must be signed in to change notification settings

JIA-ss/Client-Server-headPackage-Demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

Client-Server-headPackage-Demo

---服务器 收发消息+自定义包头处理 --- 客户端:

  1. 发送包头(文件名、文件大小)
  2. 等待客户端回ack包
  3. 发送文件主体

服务端:

  1. 接收包头
  2. 创建对应文件名,设定文件大小,根据大小进行mmap映射
  3. 发送ack包
  4. 接收文件主体

原生C++代码,未进行封装,学习过程中记录踩坑点, 服务端踩坑点:

  1. //【坑位1】*** *** accept的返回值,是client的socket_fd值,而不是0或-1 *** ***
  2. //【坑位2】*** *** recv的第一个fd参数,是client的socket_fd,而不是自身的socket_fd *** ***
  3. //【坑位3】*** *** server向client发送数据时候,send的fd要填client的fd *** ***
  4. //【坑位4】*** *** mmap的时候,打开方式一定要检查好,我这了踩坑排了好久,一定一定注意,bad address 有可能是 只读映射,没有写入权限 *** ***

客户端踩坑点: 0. //仔细检查open权限跟mmap的权限是否一致,不一致也回出现拒绝访问的错误

看的时候,只看对应文件夹里面的main即可,为了提高学习效率,没有做目录层级管理

About

---服务器 收发消息+自定义包头处理 --- \n原生C++代码,未进行封装,学习过程中记录踩坑点,服

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published