我想寫一個小硬件模擬器,從套接字讀取輸入並將響應寫回。我想爲網絡部分使用ncat,爲邏輯使用Perl。但是當我用ncat運行我的perl腳本時,它永遠不會發送響應。爲什麼ncat -exec使用shell腳本而不使用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所做的。另外,當我用ncat而不是/ bin/cat使用下面的bash腳本時,它就像/ bin/cat一樣工作。 ncat像我期望的那樣迴應客戶的迴應。
#!/bin/bash
while [ true ]
do
read lin
echo "$lin"
done
我該如何讓我的Perl腳本以我想要的方式工作?
謝謝。這解決了問題。我想我不知道Perl和我應該如何。 – GMK