如果想做一个局域网远控程序,控制端用TreeView来显示服务端磁盘分区文件目录树,文件目录信息怎么打包传递比较好?还有怎么自定义简单的协议?

ooolinux 2019-03-14 08:31:58
如果想做一个局域网远控程序,控制端用TreeView来显示服务端磁盘分区文件目录树,文件目录信息怎么打包传递比较好?还有怎么自定义简单的协议?
...全文
232 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
ooolinux 2019-06-06
  • 打赏
  • 举报
回复
引用 17 楼 zjg_huangcy 的回复:
如果是可视化的,可以传递图片,传递鼠标模似点击的x、y^_^
如果两机屏幕分辨率相差很多就比较麻烦。
ooolinux 2019-06-06
  • 打赏
  • 举报
回复
引用 20 楼 早打大打打核战争 的回复:
传递图像不可靠,因为是远程控制软件,并非远程桌面软件,后者要求必须登录进服务端,前者并不必须登录


也是。
  • 打赏
  • 举报
回复
传递图像不可靠,因为是远程控制软件,并非远程桌面软件,后者要求必须登录进服务端,前者并不必须登录
ooolinux 2019-06-05
  • 打赏
  • 举报
回复
引用 17 楼 zjg_huangcy 的回复:
如果是可视化的,可以传递图片,传递鼠标模似点击的x、y^_^
这个想法很新颖~
zjg_huangcy 2019-06-05
  • 打赏
  • 举报
回复
如果是可视化的,可以传递图片,传递鼠标模似点击的x、y^_^
ooolinux 2019-05-23
  • 打赏
  • 举报
回复
引用 15 楼 早打大打打核战争 的回复:
不需要那么复杂,最简单的方法,每个文件都传全路径,由控制端自己创建树就可以了


也是一种办法。
  • 打赏
  • 举报
回复
不需要那么复杂,最简单的方法,每个文件都传全路径,由控制端自己创建树就可以了
ooolinux 2019-05-23
  • 打赏
  • 举报
回复
引用 13 楼 titan_ysl 的回复:
当然可以存为内存流的,ClientDataSet 有SaveToStream函数的。 其实,要远程直接访用表,用datasnap也行的,这个封装了indy组件,的。用第三方的kbmmw也可以。


有点复杂了~
titan_ysl 2019-05-22
  • 打赏
  • 举报
回复
用ClientDataSet建立一个内存表,把目录信息放在表里,之后存为.cds文件,最后用IdTCPClient和IdTCPServer来传文件就行。
  • 打赏
  • 举报
回复
引用 5 楼 青蛙工作室 的回复:
看我头像的数字,谁是真品?


注册12年未必一开始就是小青蛙头像...
青蛙工作室 2019-05-22
  • 打赏
  • 举报
回复
看我头像的数字,谁是真品?
titan_ysl 2019-05-22
  • 打赏
  • 举报
回复
当然可以存为内存流的,ClientDataSet 有SaveToStream函数的。 其实,要远程直接访用表,用datasnap也行的,这个封装了indy组件,的。用第三方的kbmmw也可以。
ooolinux 2019-05-22
  • 打赏
  • 举报
回复
引用 10 楼 titan_ysl 的回复:
目录信息的存放结构当然要自己设计,好像没现成的。简单地,你可以用
层级 本层名 是否文件夹 上级目录全名 四个字段建一个表,
再用findfirst遍历文件下所有文件,把内容填入上面的表中。当然你如嫌上面的表太大。可再建两个表,
一个表两个字段,上级目录全名,唯一编号,
另一个表 层级 本层名 是否文件夹 唯一编号 四个字段
想法把先前4个字段的数据装入这两个表中,再传这两个表就行。当然,要分层获取,按层级过滤一下表,再把数据装入一个空表保存后再传送就行了。


有空我再琢磨一下。
ooolinux 2019-05-22
  • 打赏
  • 举报
回复
引用 10 楼 titan_ysl 的回复:
目录信息的存放结构当然要自己设计,好像没现成的。简单地,你可以用
层级 本层名 是否文件夹 上级目录全名 四个字段建一个表,
再用findfirst遍历文件下所有文件,把内容填入上面的表中。当然你如嫌上面的表太大。可再建两个表,
一个表两个字段,上级目录全名,唯一编号,
另一个表 层级 本层名 是否文件夹 唯一编号 四个字段
想法把先前4个字段的数据装入这两个表中,再传这两个表就行。当然,要分层获取,按层级过滤一下表,再把数据装入一个空表保存后再传送就行了。
下面是遍历文件下所有文件的方法
#include <iostream>
#include <io.h>
#include <string>
using namespace std;
void dir(string path)
{
long hFile = 0;
struct _finddata_t fileInfo;
string pathName, exdName;
// \\* 代表要遍历所有的类型
if ((hFile = _findfirst(pathName.assign(path).append("\\*").c_str(), &fileInfo)) == -1) {
return;
}
do
{
//判断文件的属性是文件夹还是文件
cout << fileInfo.name << (fileInfo.attrib&_A_SUBDIR? "[folder]":"[file]") << endl;
} while (_findnext(hFile, &fileInfo) == 0);
_findclose(hFile);
return;
}
int main()
{
//要遍历的目录
string path="E:\\work\\zhidao\\test4";
dir(path);
system("pause");
return 0;
}
转自百度知道:https://zhidao.baidu.com/question/1798637132504240907.html?qbl=relate_question_0&word=C%2B%2B%B5%C3%B5%BD%CE%C4%BC%FE%BC%D0%CF%C2%CE%C4%BC%FE%CA%FD%C4%BF


存为文件,再传送,可以存为内存流吗?
titan_ysl 2019-05-22
  • 打赏
  • 举报
回复
目录信息的存放结构当然要自己设计,好像没现成的。简单地,你可以用 层级 本层名 是否文件夹 上级目录全名 四个字段建一个表, 再用findfirst遍历文件下所有文件,把内容填入上面的表中。当然你如嫌上面的表太大。可再建两个表, 一个表两个字段,上级目录全名,唯一编号, 另一个表 层级 本层名 是否文件夹 唯一编号 四个字段 想法把先前4个字段的数据装入这两个表中,再传这两个表就行。当然,要分层获取,按层级过滤一下表,再把数据装入一个空表保存后再传送就行了。 下面是遍历文件下所有文件的方法 #include <iostream> #include <io.h> #include <string> using namespace std; void dir(string path) { long hFile = 0; struct _finddata_t fileInfo; string pathName, exdName; // \\* 代表要遍历所有的类型 if ((hFile = _findfirst(pathName.assign(path).append("\\*").c_str(), &fileInfo)) == -1) { return; } do { //判断文件的属性是文件夹还是文件 cout << fileInfo.name << (fileInfo.attrib&_A_SUBDIR? "[folder]":"[file]") << endl; } while (_findnext(hFile, &fileInfo) == 0); _findclose(hFile); return; } int main() { //要遍历的目录 string path="E:\\work\\zhidao\\test4"; dir(path); system("pause"); return 0; } 转自百度知道:https://zhidao.baidu.com/question/1798637132504240907.html?qbl=relate_question_0&word=C%2B%2B%B5%C3%B5%BD%CE%C4%BC%FE%BC%D0%CF%C2%CE%C4%BC%FE%CA%FD%C4%BF
ooolinux 2019-05-22
  • 打赏
  • 举报
回复
引用 7 楼 titan_ysl 的回复:
用ClientDataSet建立一个内存表,把目录信息放在表里,之后存为.cds文件,最后用IdTCPClient和IdTCPServer来传文件就行。


把目录信息放在表里,这个怎么操作?
我希望目录结构是可以分层获取、传送的。
ooolinux 2019-05-22
  • 打赏
  • 举报
回复
引用 6 楼 早打大打打核战争 的回复:
[quote=引用 5 楼 青蛙工作室 的回复:]
看我头像的数字,谁是真品?


注册12年未必一开始就是小青蛙头像...
[/quote]

头像可以换。。
ooolinux 2019-05-21
  • 打赏
  • 举报
回复
引用 2 楼 早打大打打核战争 的回复:
你俩到底啥关系,撞脸了~~~


他是假李逵~
ooolinux 2019-05-21
  • 打赏
  • 举报
回复
引用 1 楼 青蛙工作室 的回复:
服务端:
第1步,定义结构,至少应有:id号、目录名、层级、上级id号,如果在意它在兄弟中的次序,还应加个次序。
第2步,遍历服务端的目录,分别定义id号和目录名,并指定它的所处的目录层级和上级目录的id;
第3步,把全部目录转成连串数据,比如:目录id1+分割符+目录名1+分割符+层级1+上级目录+目录id2+........
第4步,发送到控制端。

控制端:
收集连串数据,按格式解码,用TreeView显示。

不敢说好,但还可以用。我用来显示各资产所处位置的,层级包括单位名(第一层,唯一)、分厂名、建筑物、房间、方位。


可以参考。
  • 打赏
  • 举报
回复
你俩到底啥关系,撞脸了~~~

加载更多回复(1)

552

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 茶馆
社区管理员
  • 茶馆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧