ftp服务器:
问题1:能不能上传目录。不能。
问题2:每次只能有一个客户端连接。
需要的数据结构:
一个共同的路径信息。保存现在用户所在的当前路径。
pthread_cond_t cond num个
pthread_mutex_t mutex num个
父线程流程:
0.传入参数args.conf 拿到IP,端口,需要建立的线程数,最大的请求数
1.创建目录ftpserver,可供遍历,上传下载使用。
2.socket();
3.bind();
4.listen() 监听客户端的请求。
5.初始化结构体
5.产生num个子线程。每个子线程有自己不同的事。所以用num个条件变量。
6.accept(),收到请求后,产生一个new_fd。主线程与客户端进行通话,看客户端需要什么操作。根据不同的操作,signal通知不同的子线程进行处理。
子线程:
1.wait()自己的条件变量;
2.拿到自己的条件变量之后,做自己的事。
2.接收客户端发来的指令:
若为:cd 目录。首先查找有没有这个目录,没有则返回错误。有,则在ftpserver目录下进入到对应目录下,然后将ll的结果保存到文件ll.txt中,将ll.txt发送给客户端。
若为:ls 命令。
1.cd 进入对应目录 ok
2.ls 列出相应目录文件 。ls可以显示当前的。 ok
3.puts 将本地文件上传至服务器。不要下目录,只下文件就行了。o