简介:远程服务器
cd…可以进入到服务器的上层目录
lcd是回到自己的上层目录
功能
1.支持多个客户端的介入
2.支持文件的获取,支持本地路径和远程路径的查看。
3.还可以调用put指令把当前文件夹上的代码传到服务器
研发思路
客户端功能:
1.获取服务器的文件: get xxx
2.展示服务器有哪些文件 ls
3.进入服务器某文件夹 cd
4.上传文件到服务器 put xxx
1.lls 查看客户端本地文件
2.lcd进入客户端xx文件夹
服务端:就是解析这些指令然后返回
注意:用recv不用read是因为read读完就把数据拿走了,而recv不会
客户端简单理解就是和之前的socket编程类似
socket bind listen
while(1) 不断accept
调用子进程,读取套接字上的readbuf(操控指令),根据指令来看客户端发来的是什么指令(cd ls pwd get ?)
最终都通过send或write送回到客户端
服务器理解:
system启动父进程
socket bind listen accept
fork() 子进程里1.接收指令 2.把指令写入到共享内存,把子进程的pid号也写入共享内存
父服务器是读共享内存 读到的返回给客户端
记住:一个子进程负责一条连接通道,当新客户端介入时创建进程,其他情况不要创建,否则会不好管控
serve.c:
put部分结合clien.c一起看:
![在这里插入图片描述](https://img-blog.csdnimg.cn/dd875f8bd2174229af80bde2bfd19704.png![在这里插入图片描述](https://img-blog.csdnimg.cn/e9cfd76676f74edb8dd20c1e82bb29e3.png
clinet.c
然后客户端就读取服务端发回来的消息(handler_server_message函数)。
(服务器没发时该函数会阻塞,发来了就读)
**
**
需要学习的一些函数:
strtok 字符分割函数
access 判断文件是否存在