使用C实现telnet

使用C实现telnet

程序大体就是我要实现的telnet程序。

在客户端,用户发送其登录名和密码,如果正确,则开始向服务器发送命令

在服务器端,我检查系统上的用户身份验证,如果是真的,我必须运行存储在文件中的默认 shell passwd,以执行他的命令。

问题是,当我尝试使用systemC 函数运行他的 shell 时,shell 会运行然后关闭,因为system()使用fork()exec(),并且在完成后为用户打开的 shell 被关闭。

如何在我的进程中运行新的 shell 并使其保持运行以执行以下命令?

答案1

去那里之前,先去阅读telnet协议的规范(RFC 854,另请参阅维基百科条目有关所涉及 RFC 的完整列表)。远程登录是一个非常复杂的协议,因为它被设计用于在各种操作系统的机器之间连接,甚至不同的字符编码。此外,建议绝不使用它,因为它非常不安全。

如果您想远程运行命令,请使用 ssh。

答案2

您可能想从更简单的事情开始做这类事情,因为听起来您好像是新手。也许旧的talk / talkd命令行程序和守护进程会更容易理解?一些有价值的资源包括 APUE(UNIX 环境中的高级编程)(Stevens)、UNP 或 UNIX 网络编程(同样由 Stevens 编写)和有效 TCP/IP 编程(Snader),让您更熟悉您将要从事的工作类型正在做的事情,特别是 TCP/IP。

答案3

你不能只使用system.您必须自己fork动手exec并在两个方向使用管道。如果您想捕获 Ctrl 键输入,您还必须使用某种终端界面。

相关内容