使PHP响应telnet(PHP Telnet服务器)

3

我有一个项目要做,如下:

当您打开telnet控制台并telnet到我的服务器时,PHP应该回复: "你好,请问你叫什么名字?"

然后您输入您的名称等信息。我该如何在PHP中实现这个功能?这可能吗?


PHP不行,用Shell可以。让人们为了一些琐事连接到您的服务器并不是一个好主意,为什么不为“它”创建一个网站呢? - user557846
你是指shell()命令吗? - Techboy6601
不,我指的是Tenet Shell,你可能本来就不应该使用它。 - user557846
不好意思,我在x10hosting上。这不是我的机器。我正在使用它作为以后某个重要项目的实验。 - Techboy6601
然后我会登录并键入'rm -r',我认为你不理解你所要求的含义。为什么不创建一个网页\表单\应用程序来完成这个任务呢? - user557846
显示剩余3条评论
2个回答

4

你能给我一个例子吗?我不确定如何使用它。 - Techboy6601

0

实际的TELNET可能有点难以正确使用;有很多控制序列用于影响终端如何显示其内容。

如果您只想编写一个人们可以通过TELNET使用的服务,那么最好使用一个现有的TELNET服务器(Ubuntu有几个可用的软件包,用于简单的TELNET:inetutils-telnetdtelnetd;用于加密的TELNET:telnetd-ssl;用于Kerberos身份验证的TELNET:heimdal-serverskrb5-telnetd。)提供TELNET功能,并将您的PHP程序设置为您希望每个人都登录的用户的登录shell。(有关登录shell的信息,请参见passwd(5)。)

如果你想要自己完成所有的套接字操作,那么你需要使用BSD套接字支持;创建一个套接字将服务器名称绑定到套接字上监听套接字,当有新连接进来时,派生一个新进程来处理新客户端,并且接受新连接

一旦您有一个连接的客户端的新进程,您可以使用标准的读写操作来发送和接收数据到客户端。如果您真的想支持完整的TELNET规范,那么需要进行一些巧妙的编程。如果您不介意没有访问高级终端功能(例如由readline(3)ncurses(3)slang提供),那么您可能需要删除带有第八位打开的字符,以摆脱来自客户端的TELNET控制字符。(我没有尝试过这个,因为当我想要在主机之间建立一个干净的未加密和未经身份验证的连接时,我总是使用netcat工具。)


请注意,“fork一个新进程”并不是必需的,但它确实使处理多个连接的客户端变得更加容易。 - sarnold

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接