在远程控制中文件管理是很重要的,下面简单讨论并实现目录传输。
首先要考虑目录传输方式,速度,效率,一个好的设计应该是这样
首先把用户要枚举的目录搜索出来,并整合成一个大的字符串,比如用户搜索了C盘那么应该把所有目录整理成一个大串
并一次通过SOCKET发送到CLIENT然后再分离,分解,分割。并在相应的LIST或者TREE上显示
我曾通过VECTOR向量方式来实现目录管理,但是VECTOR中每一项的数据并不是连续的内存,所以
只能一个文件一个文件名称的发送,这样每个文件都要发送一次,网络的包头开销就会变大。所以改用以上的简单方式
清晰明了,速度快捷,下面贴上,分割路径 的实现代码
int _tmain(int argc, _TCHAR* argv[])
{
char s[] = "f:\\hello?d:\\windows\\?c:\\ldtdll.dll?c:\\win?d:\\lengfeng?f:\\dd";
const char *d = "?";
char *p;
p = strtok(s,d);
while(p!=NULL)
{
printf("%s\n",p);
p=strtok(NULL,d);
}
getchar();
return 0;
mythread(0);
return 0;
}
原型
char *strtok(char s[], const char *delim);
编辑本段功能
分解字符串为一组字符串。s为要分解的字符串,delim为
分隔符字符串。
编辑本段说明
strtok()用来将字符串分割成一个个片段。参数s指向欲分割的
字符串,参数delim则为分割字符串中包含的所有字符。当strtok()在参数s的字符串中发现参数delim中包涵的分割字符时,则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回指向被分割出片段的
指针。
编辑本段返回值
从s开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。
所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。