PuTTY 在连接到用 PHP 实现的 Telnet/sockets 服务器时显示奇怪的字符

问题描述

我正在开发一个实现套接字和 Telnet 服务器的 PHP 程序。我使用 PuTTY 作为我的 Telnet 客户端。我的问题是,每当我在 PuTTY 中键入内容时,它都会在我实际键入内容之前向我显示这些奇怪的字符:

我重新安装了 PuTTY,但它不起作用。

这是我的 PHP 服务器代码

$sock_server = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
$result = socket_bind($sock_server,'127.0.0.1',9000);
$result = socket_listen($sock_server,1);
$sock_cli = socket_accept($sock_server);

$msg = "Insert Password: ";
socket_write($sock_cli,$msg,strlen($msg));

$pass = socket_read ($sock_cli,2048,PHP_norMAL_READ);
echo $pass;
if ($pass != "1234"){
    echo $pass;
    exit;
}

解决我的问题的任何帮助表示赞赏。谢谢。

解决方法

我在您的示例中没有看到任何 Telnet 代码。您正在使用原始套接字。所以你需要在 PuTTY 中使用 Raw 连接类型来匹配它。

如果您在 PuTTY 中选择 Telnet 连接类型,PuTTY 将向您发送 Telnet 控制序列。您可以像纯文本输入一样阅读和处理这些序列。