ソケットから入力を読み取り、応答を書き戻す小さなハードウェア エミュレーターを作成しようとしています。ネットワーク部分には 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 とまったく同じことを行います。また、/bin/cat の代わりに ncat を指定して次の bash スクリプトを使用すると、/bin/cat のように動作します。ncat は、期待どおりに応答をクライアントに返します。
#!/bin/bash
while [ true ]
do
read lin
echo "$lin"
done
Perl スクリプトを希望どおりに動作させるにはどうすればよいですか?