首页 > 解决方案 > 获取目录/客户端服务器的内容

问题描述

我需要创建两个应用程序 - 一个客户端和一个服务器,它们将相互交换消息。服务器必须处理客户端提交的几个命令,其中之一是接收指定目录的内容。我有点尝试这样做,它甚至可以工作。(顺便说一句,是否可以在不写入文件的情况下做到这一点?)但只有这样才能显示当前目录的内容。我该怎么做才能不仅将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);
}

标签: c++directoryclient-serverlsqnx

解决方案


推荐阅读