实现一个C++ 组件,把一个目录,从计算机A 拷贝到计算机B

实现一个C++ 组件,把一个目录,从计算机A 拷贝到计算机B (A 做客户端; B 做服务器端; 调用时A 上输入要传输的目录, 服务器IP ,需要保持到服务器上的路径)要求是在linux系统下,分客户端和服务器端,用C++写代码

用TCP来做一个文件传输的程序即可。
思路:
(1)读取用户输入的目录和服务器IP
(2)跟服务器建立SOCKET连接
(2)扫描改目录下的所有文件(详细一些的可以做个过滤,比如只发送txt文件等)
(3)逐个文件发送,对每个文件步骤如下:
客户端:
a) 定义报文头,报文头一般包括本次报文长度、报文类型(用于区分是说明指令还是文件内容)即可。
也就是,整个报文的固定格式是:报文长度(可用4个字节)+报文类型(1个字节)+报文内容(不定长,等于报文长度-5)
b) 打开文件,获取文件大小,先把文件的名称、文件大小发送到服务器
c) 读取文件内容,分段发送(如果文件较小,可能一次就能发完,如果文件较大,可能需要发送多次,每次发送的报文长度不宜过长)
d) 整个文件发送完毕,关闭文件,继续下一个文件的发送
服务端:
a) 接收报文,按照上述报文解析数据,根据报文长度截取指定长度的数据(如果本次长度不足,再读一次,并把后读取的追加到上一次读取的字符串后面。如果本次读取的数据长度大于报文长度,按照报文长度截取即可)
b) 如果a)中接收到的是说明报文,就根据文件名再指定目录创建一个文件,并开始接收数据即可
c) 如果a)中接收到的是文件内容数据,直接写入文件,直到写完(再说明报文中,有整个文件的大小,所以接收完指定长度的内容即可结束文件的写入)。