远程控制文件管理目录传输路径分割分离

在远程控制中文件管理是很重要的,下面简单讨论并实现目录传输。

首先要考虑目录传输方式,速度,效率,一个好的设计应该是这样

首先把用户要枚举的目录搜索出来,并整合成一个大的字符串,比如用户搜索了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中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。

你可能感兴趣的:(远程控制文件管理目录传输路径分割分离)