我在 Cygwin Xinetd 下方新增了一個簡單的套接字 Perl 伺服器腳本來回顯客戶端輸入,但它顯示為空白

我在 Cygwin Xinetd 下方新增了一個簡單的套接字 Perl 伺服器腳本來回顯客戶端輸入,但它顯示為空白

我在 x64 Windows7 電腦上安裝了 x32 版本 1.7.33 的 Cygwin。

我在 /etc/xinetd.d/ccapi 下新增了一個新服務。

$ cat ccapi-stream
service ccapi
{
        id = ccapi-stream
        disable = no
        socket_type = stream
        protocol = tcp
        wait = no
        user = alma
        server = /cygdrive/c/ccintegration/scripts/cygwin/server_xinet.exe
        port = 49300
}

我按照 xinetd-README 安裝 xinetd 並啟動它:

cygrunsrv -I xinetd -d "CYGWIN xinetd" -p /usr/sbin/xinetd -a "-stayalive -dontfork" -y tcpip -u alma -w xxx
cygrunsrv -S xinetd

命令“ ps -ef”顯示 xinetd 正在運行。

server_xinet.exe 是一個已編譯的 ActiveState perl 腳本。它回顯從客戶端收到的內容:

...
open($localLog ">> local.log");
$rdata = <STDIN>;
chomp($rdata);
print $localLog "  Data Received at $d $t: <$rdata>\n";  # so I know xinetd loads this exe
close $localLog;

# write response data to the connected client
print STDOUT "You said: $rdata\n";
exit;

客戶端 perl 腳本只是將一個字串傳送到連接埠 49300。

$HOST = "127.0.0.1";  # also tried using hostname "HOST.xxx.com";
$PORT = "49300";
$data = "@ARGV";

$socket = IO::Socket::INET->new(
    PeerAddr => "$HOST",
    PeerPort => "$PORT",
    Proto => "tcp",
    );
die "Could not connect to $HOST:$PORT : $@\n" unless $socket;

  print $socket "$data\n";
  $socket->flush();
  $answer = <$socket>;
  print "Echo from server: <$answer>\n";
close($socket);

我在同一台電腦上運行此客戶端腳本,但它沒有從伺服器接收任何內容

$ perl simpleClient.pl "This is it:"
Echo from server: <>

我檢查了 local.log 並在其中找到了一個新條目:

Data Received at 2015mar12 10:11:39: <>

這意味著 cygwin xinetd 啟動 server_xinet.exe。

問題是伺服器沒有從中讀取任何內容<STDIN>,無論寫入什麼內容 <STDOUT>,客戶端都沒有收到。

我從 Unix 機器上移植了這個,它在那裡工作得很好。

Cygwin 中的問題是什麼?

感謝您的任何幫助,您可以提供。

答案1

我終於讓我的客戶端/伺服器互相交談了。我決定使用 cygwin perl 來運行伺服器和客戶端,並且它可以工作。我將 /etc/xinetd.d/ccapi-stream 中的 /cygdrive/c/ccintegration/scripts/cygwin/server_xinet.exe (使用 ActiveState PDK 編譯)替換為 /cygdrive/c/ccintegration/scripts/cygwinration/server_xinet .pl然後使用'#!/usr/bin/perl' 作為server_xinet.pl 和simpleClient.pl 中的第一行。

./simpleClient.pl「這正在工作」來自伺服器的迴聲:

問候,阿爾瑪

相關內容