我正在尝试编写一个小硬件模拟器,它从套接字读取输入并将响应写回。我想将 ncat 用于网络部分,将 Perl 用于逻辑。但是当我用 ncat 运行我的 perl 脚本时,它永远不会发送响应。
首先,这显示了我想如何使用 ncat。我将 /bin/cat 用于演示目的,因为它很简单。
启动服务器ncat -l 1234 -keep-open --exec "/bin/cat"
启动客户端ncat 12.34.56.789 1234
这样做会导致 ncat 像我期望的那样回显命令。但是当我尝试在 perl 中编写 cat 并使用它而不是 /bin/cat 时。
#!/usr/bin/perl
while (<>) {
print $_;
}
和
ncat -l 1234 -keep-open --exec "/path/cat.pl"
ncat 从不将响应发送回客户端。即使在命令行中,它也完全符合 /bin/cat 的功能。此外,当我将以下 bash 脚本与 ncat 而不是 /bin/cat 一起使用时,它的工作方式与 /bin/cat 一样。ncat 像我期望的那样将响应回显给客户端。
#!/bin/bash
while [ true ]
do
read lin
echo "$lin"
done
我必须做些什么才能让我的 Perl 脚本按我想要的方式工作?