FTP项目

项目内容

  • 服务端的构建

    • 基本网络配置信息
    • 接收recv,发送send
  • 客户端的构建

    • 网络connect
    • 接收和发送
  • 日志信息的构建

    • logopen()
    • logclose()
    • logwrite ()
    • 用到的一些比较陌生API:va_start,va_end,fflush(强制写入文件中) --(可变参数的运用)
  • 基本功能

    • ls,显示服务端的文件
      popen函数。第一个参数为commond,第二个参数type,分为r和w。通过调用该函数实现获取服务端的文件,将数据存入struct messege中data,发送到客户端。客户端接收一个结构体,将其中的data打印出来。

    • get,下载服务端的文件

      • 计算文件实际长度:fseek
      • 分割参数: 用strstr或者strtok
      • 分割空格
      • \n
      • 结尾的\0
    • put,上传文件到服务端

      • 计算文件长度
      • 分割参数
      • 分割空格
      • 客户端将文件内容写入结构体中,服务端创建文件保存下来
    • quit,退出

      • 跳出循环,识别到quit命令时,跳出while循环。
    • cd,切换目录

      • popen,信息存入data发送客户端,客户端打开并显示。
  • 高级功能

    • 用户名和密码验证
      • 创建一个公用的结构体,用于传输输入的用户名和密码。服务端接收到该结构体后,将其中的信息解析出与服务端文件中预存号的用户名和密码比对。
    • get和put的文件,进行md5校验
      • 分割字符:保存下校验码。
      • 分割函数
    • hist,显示历史记录
      • 服务端没接收一个命令,创建链表,接收命令保存。客户端输入hist命令时,服务端将链表信息遍历到data中,发送到客户端。
  • 公共的消息体

    • msg.h 中定义一个枚举类型 enum 将LS、CD等命令宏处理。定义一个struct messege 结构体,里面存放命令、命令行、cm5、数据存放等。

遇到的一些问题:
1.日志信息的构建遇到的问题:调用logwrite时出现段错误,gdb发现为vfprintf(FILE *stream,const char *format,va_list ap)处出现段错误。是因为在前面将该函数第一个参数赋值为了NULL。。需要更加细心和理解对指针的使用。
2.创建一个函数,主函数中int a=10,建立一个fun函数去修改a的值。要将a的地址传到fun中 才可以将a的值改变。
3.思路不够清晰,急着敲代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值