我需要使用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);
}
}
感谢关注。