C中的客户端服务器Telnet,管道问题

时间:2020-02-04 14:23:39

标签: c sockets pipe telnet

我需要使用TCP套接字用C语言编写一个简单的telnet应用程序。我所做的是一个客户端和服务器,它正在使用诸如“ ls”或“ pwd”之类的命令,但是我需要能够使用不同的shell程序,如bash,sh,csh。有人可以告诉我应该使用哪些功能或如何重建服务器吗?因为现在当我使用“ sh”命令时,服务器和客户端感到不舒服。

实际上我在客户端中有此功能:

void chat(int sockfd){
    char buff[MAX]; 
    char text[MAX];
    int n; 
    for (;;) { 
        bzero(buff, sizeof(buff)); 
        printf("->: "); 
        n = 0; 
        while ((buff[n++] = getchar()) != '\n') 
            ; 
        write(sockfd, buff, sizeof(buff)); 
        if ((strncmp(buff, "exit", 4)) == 0) { 
            printf("Exiting...\n"); 
            break; 
        } 
        bzero(buff, sizeof(buff)); 
        read(sockfd, tex, sizeof(tex));
        printf("Server message ->: %s", tex);
        bzero(tex, MAX);
    } 
}

还有一个内部服务器:

void chat(int sockfd){
        char buff[MAX];
        int n,p[1];
        FILE *fp;
        char path[1024];

        for(;;){
            bzero(buff, MAX);
            read(sockfd, buff, sizeof(buff));
            fp = popen(buff, "r");
            if(fp == NULL){
                strncpy(buff, "Failed to run command", MAX);
                write(sockfd, buff, sizeof(buff));
                continue;
            }
            printf("%s\n", buff);
            while(fgets(path, sizeof(path), fp) != NULL){
                write(sockfd, path, sizeof(path));
            }
            pclose(fp);
        }
    }

感谢关注。

0 个答案:

没有答案