c++ - 获取目录/客户端服务器的内容
问题描述
我需要创建两个应用程序 - 一个客户端和一个服务器,它们将相互交换消息。服务器必须处理客户端提交的几个命令,其中之一是接收指定目录的内容。我有点尝试这样做,它甚至可以工作。(顺便说一句,是否可以在不写入文件的情况下做到这一点?)但只有这样才能显示当前目录的内容。我该怎么做才能不仅将ls设置为控制台,还可以设置目录的名称(或它的路径)并且我将获得内容?也就是说,如果我们概括,我该如何设置特定目录的名称?
还有一件事情。我在一个终端中运行服务器,在另一个终端中运行客户端。并且在向服务器发送ls命令(消息)时,我的内容在客户端和服务器的终端中都显示。我怎样才能让它只出现在客户端,而这些信息不显示在服务器中?
我将非常感谢您的帮助。
for(;;){
recv_id=MsgReceive(channel_id,message, sizeof(message),NULL);
printf( "Receive message, recv_id=%d\n",recv_id);
printf("Message is - %s\n",message);
. . .
else if (strstr(message, "ls")!=0){
FILE *f=popen(message,"w");
FILE *g;
strcat(message, "ls.txt");
f=popen(message,"w");
pclose(f);
g=fopen("ls.txt","r");
strcpy(message,"");
while(feof(f)==0){
fscanf(f,"%s",&in);
strcat(message, in);
strcat(message,"\n");
}
fclose(g);
printf("ls successfull\n");
}
. . .
MsgReply(recv_id, EOK, message,sizeof(message)+1);
}
upd :我好像想出了如何让它更简单(是的,同时目录的内容不会显示在服务器上)。但我仍然不知道如何处理这个命令,不仅针对当前目录。
else if (strstr(message, "ls")!=0){
system("ls>ls.txt");
g=fopen("ls.txt","r");
while(feof(g)==0){
fscnaf(g,"%s",&in);
strcat(message,in);
strcat(message,"\n");
}
fclose(g);
}
解决方案
推荐阅读
- python - 无法使用 Conda 升级 Conda 和安装软件包
- react-native - 不变违规:在“Connect(App)”道具的任一上下文中都找不到“store”
- php - 如何从我的服务器 URL 中隐藏我的文件名 (checker.php)
- asp.net - 如何在 Android Studio 中将 asmx 类添加到项目中
- amazon-web-services - SMTP 服务器错误:需要身份验证
- sql - 使用 Oracle 通过 PIVOT 将三个表合二为一
- java - FLAG_NOT_FOCUSABLE 活动
- javascript - Jquery自动增量值并检测重置
- ruby-on-rails - AWS S3 存储桶图像未出现在 Rails 应用程序中
- java - Xamarin Android Picasso Java.Lang.RuntimeException:android_getaddrinfo 失败:EAI_NODATA