我有一个项目要做,如下:
当您打开telnet控制台并telnet到我的服务器时,PHP应该回复: "你好,请问你叫什么名字?"
然后您输入您的名称等信息。我该如何在PHP中实现这个功能?这可能吗?
我有一个项目要做,如下:
当您打开telnet控制台并telnet到我的服务器时,PHP应该回复: "你好,请问你叫什么名字?"
然后您输入您的名称等信息。我该如何在PHP中实现这个功能?这可能吗?
实际的TELNET可能有点难以正确使用;有很多控制序列用于影响终端如何显示其内容。
如果您只想编写一个人们可以通过TELNET使用的服务,那么最好使用一个现有的TELNET服务器(Ubuntu有几个可用的软件包,用于简单的TELNET:inetutils-telnetd
,telnetd
;用于加密的TELNET:telnetd-ssl
;用于Kerberos身份验证的TELNET:heimdal-servers
,krb5-telnetd
。)提供TELNET功能,并将您的PHP程序设置为您希望每个人都登录的用户的登录shell。(有关登录shell的信息,请参见passwd(5)
。)
如果你想要自己完成所有的套接字操作,那么你需要使用BSD套接字支持;创建一个套接字,将服务器名称绑定到套接字上,监听套接字,当有新连接进来时,派生一个新进程来处理新客户端,并且接受新连接。
一旦您有一个连接的客户端的新进程,您可以使用标准的读写操作来发送和接收数据到客户端。如果您真的想支持完整的TELNET规范,那么需要进行一些巧妙的编程。如果您不介意没有访问高级终端功能(例如由readline(3)
、ncurses(3)
或slang
提供),那么您可能需要删除带有第八位打开的字符,以摆脱来自客户端的TELNET控制字符。(我没有尝试过这个,因为当我想要在主机之间建立一个干净的未加密和未经身份验证的连接时,我总是使用netcat
工具。)