日期:2014-05-16  浏览次数:20714 次

telnet服务器把标准输出重定向到socket,传递给客户端再输出到屏幕
如题,我在用c语言实现telnent的服务器和客户端,现在服务器可以收到从客户端传送过来的命令,成功执行完命令以后,我想把执行的结果重定向到socket,并且通过socket传递给客户端,在客户端把结果输出到屏幕。有人教我怎么把输出结果通过socket传递到客户端并输出吗,万分感谢!

部分代码:
if (!fork()) //fork一个子进程处理从客户端收到的命令
{
//" use socket for stdin, stdout and stderr "
dup2(new_fd, 0);
dup2(new_fd, 1);
dup2(new_fd, 2);
//" change to the work directory "
chdir(dirroot);
//" run the shell commond of transmission from client "
char commPath[MAXBUF + 1]; 
sprintf(commPath, "/bin/%s", buf);
execl(commPath, buf, (char *)NULL);
}
在这已经可以成功在服务器端运行命令了。
现在已经重定义到socket了,如何传递给客户端呢?

send(new_fd, NULL, strlen(NULL), 0); //这样吗???

在客户端如何接受并在屏幕上显示结果呢?

在线急等



------解决方案--------------------
已经重定向到socket了,那执行程序就可以了,它会自动把输出信息发送到与客户端的socket连接中
不用自己再调用send了

客户端正常读取socket中的内容就行了,read或recv
------解决方案--------------------
recv(fd, ...)
printf()
------解决方案--------------------
服务器:
dup2(sockfd, STDOUT_FILENO);

客户端:
read(sockfd, buffer, sizeof(buffer));
printf("%s", buffer);

这样就可以,当然具体细节要处理。